我有兩個模式,深填充
一個用戶,並在用戶模式另一個用於後
,我已經得到了latestPost一個屬性,它是一個一個的ObjectId在後架構
當我加載了用戶對象,
我想要得到的lastestPost爲對象,包括作者從用戶模式用戶名條目,其中作者是想匹配的的ObjectId用戶模式中的_id字段。
貓鼬教程似乎使用的
User.findOne({ _id: req.user.id})
.populate('latestPost')
.populate({ path: 'latestPost', populate: 'author'})
的語法,但它不工作
它顯示
{ _id: 58f54fa51febfa307d02d356,
username: 'test',
email: '[email protected]',
firstName: 'test',
lastName: 'test',
__v: 0,
latestPost:
{ _id: 58f54fa51febfa307d02d357,
user: 58f54fa51febfa307d02d356,
author: 58f54fa51febfa307d02d356,
date: 2017-04-17T23:28:37.960Z,
post: 'Test',
__v: 0 } }
,但我想讓它顯示
latestPost:
{
author: {
username : something
}
}
我們如何做這樣的事情?模式或查詢的設計有問題嗎?
var UserSchema = new Schema({
username : String,
firstName : String,
lastName : String,
email : String,
password : String,
views : Number,
latestPost : { type: Schema.Types.ObjectId, ref: 'Post' }
});
var PostSchema = new Schema({
user : { type: Schema.Types.ObjectId, ref: 'User' },
author : { type: Schema.Types.ObjectId, ref: 'User' },
date : Date,
body : String
});
var User = mongoose.model('User', UserSchema);
var Post = mongoose.model('Post', PostSchema);
User.findOne({ _id: req.user.id})
.populate('latestPost')
.populate({ path: 'latestPost', populate: 'author'})
.exec(function(err, user) {
if (err) res.json(err)
console.log(user)
})
爲什麼在你的輸出中說'bio'? – Mikey
對不起,舊代碼。更新後 – totalnoob