从mongoose子模式填充对象Id的数组

时间:2018-01-02 08:42:54

标签: node.js mongodb mongoose

我有架构

    var likedSchema = new Schema({
        counter: {type: Number, default: 0, required: true},
        user: {type: Array, default: [], ref: 'User'}
    });

上面的模式包含了用户和计数器的ObjectId数。

    var mySchema = new Schema({
        liked: likedSchema,
        name: {type: String, required: true}
    });

在上面的架构中,我使用的是likesSchema

        mongoose.model('MyModel', mySchema);

这是定义的两个架构。 在likesSchema中,我有多个用户记录的objectIds。

通过使用mySchema,我想填充这些记录以获取所有用户的详细信息。

liked: {counter: 1, user:[{"name": 
"smith","_id":"5a437f06b2a00b28ecf217a9"},{"name": 
"john","_id":"5a437f06b2a00b28ecf21192"}];

我需要以上述格式显示数据,并附上用户详细信息。 任何人都可以帮我解决问题。

1 个答案:

答案 0 :(得分:2)

中的

user: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: "User"
}]

然后在查询数据库时,例如使用findById,使用populate,如下所示:

MySchema.findById({someId}).populate("liked.user").exec(err, foundObject){
    //if no error, then you have the object with a list of users in the liked object here.
    console.log(foundObject.liked); //obviously in your code, have an if (err) line before this 
}