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

Aar*_*she 3 mongoose mongodb node.js

我有架构

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

上面的架构包含与用户和计数器相关联的 ObjectId 的数量。

    var mySchema = new Schema({
        liked: likedSchema,
        name: {type: String, required: true}
    });
Run Code Online (Sandbox Code Playgroud)

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

        mongoose.model('MyModel', mySchema);
Run Code Online (Sandbox Code Playgroud)

这是定义的两个模式。在likeSchema 中,我有多个用户记录的objectId。

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

liked: {counter: 1, user:[{"name": 
"smith","_id":"5a437f06b2a00b28ecf217a9"},{"name": 
"john","_id":"5a437f06b2a00b28ecf21192"}];
Run Code Online (Sandbox Code Playgroud)

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

小智 5

在喜欢的Schema中:

user: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: "User"
}]
Run Code Online (Sandbox Code Playgroud)

然后在查询数据库时,例如使用 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 
}
Run Code Online (Sandbox Code Playgroud)