Mongoose one在模式之间有很多关系

Mongoose one在模式之间有很多关系,mongoose,mongoose-populate,Mongoose,Mongoose Populate,我知道这个问题以前已经提出过很多次了,Mongo没有确切的“hasMany”连接,但到目前为止,我没有在两个模式之间建立连接。以下是我所拥有的: 用户模型(User.js) 和posts模式(post.js) 我使用模式填充,它与post完美结合:每个模式都有所有者。但是,它不能很好地与用户协同工作。我希望能够检索显示属于他们的帖子的用户列表。在routes.js中,我定义了对数据库的api调用 app.get('/api/users', function(req, res) { Use

我知道这个问题以前已经提出过很多次了,Mongo没有确切的“hasMany”连接,但到目前为止,我没有在两个模式之间建立连接。以下是我所拥有的:

用户模型(User.js)

和posts模式(post.js)

我使用模式填充,它与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(毫不奇怪)都返回空数组。如何正确绑定这两个模型?

只是一个猜测

  • 您可以
    用户。查找所有用户
  • 然后你把它们全部归还
  • 然后填充帖子ID和标题,这已经太晚了,因为你已经发送了用户
  • 参见人口示例

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

    您在用户上指向“帖子”的链接不是数组?那么只链接一个帖子

    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 },
    });
    
    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');
    });