正确的方法使用.populate()mongodb Node.js

时间:2014-11-12 06:45:48

标签: javascript node.js mongodb mongoose

我正在尝试将完整的用户模型附加到我的评论部分中的每个评论。由于mongodb没有连接,我一直试图弄清楚如何使用.populate()从控制器添加用户对象。据我了解,使用populate函数只需要做两件事。

  1. 在模型中定义ref。
  2. 在已定义ref的字段名称上调用.populate()。
  3. 我已将模型中的参考定义为'用户'模型:

    var commentSchema = new mongoose.Schema({
      author: { type: String, ref: 'User' },
      description: String,
      commentID: String,
      hasParent: String,
      parentComment: String,
      timestamp: { type: Number, default: 0 },
    });
    

    然后我尝试将用户模型添加到评论对象中的作者字段:

    Comment
      .find() 
      .populate('author')
      .exec(function (err, comments) {
        console.log(comments);
      }); 
    

    我缺少一步吗?我希望在每条评论的作者字段中看到完整用户对象的所有评论。

2 个答案:

答案 0 :(得分:2)

解决方案是从mongodb删除评论集合。从新鲜开始它按预期工作。如果有人遇到类似问题,请尝试删除在将ref添加到模型之前创建的对象集合。

答案 1 :(得分:0)

请考虑进行以下更改。

author: { type: String, ref: 'User' };
authot: { type: Schema.Types.ObjectId, ref:'User'};