Mongoose在Schemas之间有许多关系

时间:2015-03-17 22:41:28

标签: mongoose mongoose-populate

我知道这个问题之前已经多次被提出过,并且Mongo并没有那么精确,而且有很多"连接,但到目前为止我无法在两个模式之间建立连接。这就是我所拥有的:

用户模型(user.js)

var userSchema = mongoose.Schema({

    posts: {
        _id : { type: Schema.Types.ObjectId, ref: 'Post' },
        title : {type: String, ref: 'Post'}
    },

    facebook         : {
        id           : String,
        token        : String,
        email        : String,
        name         : String
    }
});  

发帖架构(post.js)

var meetingsSchema = mongoose.Schema({
    title: String,
    description: String,
    _owner: { type: Schema.Types.ObjectId, ref: 'User' },
    ownerName: { type: String, ref: 'User' },
    created_at: { type: Date, default: Date.now },
});

我使用模式填充,它与post完美配合:每个人都有所有者。但是,它对用户来说效果不佳。我希望能够检索显示属于他们的帖子的用户列表。在routes.js中,我定义了对数据库的api调用

app.get('/api/users', function(req, res) {
    User.find(function(err, users) {
        if (err)
            res.send(err)
        res.json(users); 
    }).populate('posts._id', 'posts.title');
});

但是,在shell和(并不奇怪)客户端user.posts上都返回空数组。如何正确绑定这两个模型?

2 个答案:

答案 0 :(得分:0)

只是猜测。

  1. User.find所有用户。
  2. 然后你全部归还。
  3. 然后您填充帖子ID和标题,因为您已经发送了用户已经太晚
  4. 参见人口示例here

    此外,我希望.posts属性是一个数组,而不仅仅是平面对象。请参阅comments属性here

答案 1 :(得分:0)

指向"帖子"的链接用户不是数组?所以只链接一个帖子?