如何在Array中获取objectId的内容 - Mongoose / NodeJs

时间:2014-06-04 15:00:15

标签: javascript node.js mongodb mongoose populate

我想获取我的标签的数组/对象,其中包含objectId的内容(由用户ID找到)。

的usermodel

var userSchema = new mongoose.Schema({
    pseudo : { type : String },
    fullname : { type : String },
    password : { type : String },
    email : { type : String },
    //tags : { type : Array },
    tags : [
        {
            objectId : { type : mongoose.Schema.Types.ObjectId, ref: 'tag'},
            completed : { type : Boolean }
        }
    ],
    dateCreation : { type : Date, default : Date.now }
});

tagModel

var tagSchema = new mongoose.Schema({
  name : { type : String },
  alias : { type : String },
  description : { type : String },
  dateCreation : { type : Date, default : Date.now }
});

猫鼬请求

userModel.find({ _id : req.session.passport.user._id }).select('tags').populate('objectId', 'name alias').lean().exec(function (err, result) {
    console.log(JSON.stringify(result));
});

的console.log

[
    {
        "_id":"538efe4a3bb9d97018b90ee4",
        "tags":[
                   {
                    "objectId":"538f25f7f4d621281b7376e9", 
                    "completed":false, 
                    "_id":"538f25f7f4d621281b7376ea"
                   }
        ]
    }
]

我想获得objectId的内容:/喜欢'name','alias'......

我知道我可以写两个获取内容的请求,但它没有优化:/

你能帮助我吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

您需要在populate来电中填写字段的完整网点符号路径:

userModel.find({ _id : req.session.passport.user._id })
    .select('tags')
    .populate('tags.objectId', 'name alias')
    .lean()
    .exec(function (err, result) {
        console.log(JSON.stringify(result));
    }
);