mongoose联合查询populate如何使用?

发布于 2022-09-05 02:42:00 字数 1160 浏览 8 评论 0

使用node练习博客项目的时候,文章需要关联用户和分类,评论集合,所以就用到了mongoose的populate查询,可是无法返回想要的数据,代码如下:

保存文章的:

    // 拿到session中的用户信息
    let authorObj = {author: ObjectId(req.session.userInfo.userID)};
    let cateObj = {category: ObjectId(req.body.category)};
    // 增加到数据中
    postData = Object.assign(req.body,authorObj,cateObj);
    // 添加新数据
    postModel.create(postData)
        .then((result)=>{
            if(!result){
                reMessage.msg='文章保存错误';
                reMessage.code=2003;
                res.send(reMessage);
                return;
            }
            reMessage.msg='文章发表成功';
            reMessage.code=0;
            res.send(reMessage);
        });

返回数据的:

postModel.find({})
        .populate({path:'users',select:'username'})
        .then((data)=>{
            console.log(data);
            res.render('admin/posts-list',{
                login:req.session.login,
                userInfo:req.session.userInfo,
                fields:['标题','作者','分类','发表时间'],
                datas:data
            });
        });
        
        
        

具体代码就如上,为什么不行呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

荒芜了季节 2022-09-12 02:42:00

已解决,是创建Schema的字段ref引用错误,应该引用userModel = db.model('user',suerSchema)的第一个参数,而不是userModel

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文