所以我已经花了大约4个小时,阅读了几次文档,但仍然无法找出我的问题。我正在尝试对我的模型执行一个简单的 populate() 。
我有一个用户模型和商店模型。用户有一个 favoriteStores 数组,其中包含商店的 _id。我正在寻找的是这个数组将填充商店详细信息。
用户模型
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var UserSchema = new Schema({
username: String,
name: {first: String, last: String},
favoriteStores: [{type: Schema.Types.ObjectId, ref: 'Store'}],
modifiedOn: {type: Date, default: Date.now},
createdOn: Date,
lastLogin: Date
});
UserSchema.statics.getFavoriteStores = function (userId, callback) {
this
.findById(userId)
.populate('favoriteStores')
.exec(function (err, stores) {
callback(err, stores);
});
}
还有另一个文件:
商店模型
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var StoreSchema = new Schema({
name: String,
route: String,
tagline: String,
logo: String
});
module.exports = mongoose.model('Store', StoreSchema);
运行后我得到的是:
{
"_id": "556dc40b44f14c0c252c5604",
"username": "adiv.rulez",
"__v": 0,
"modifiedOn": "2015-06-02T14:56:11.074Z",
"favoriteStores": [],
"name": {
"first": "Adiv",
"last": "Ohayon"
}
}
favoriteStores 是空的,尽管当我只是在没有填充的情况下获取商店时,它确实显示了商店的 _id 。
任何帮助是极大的赞赏!谢谢 ;)
UPDATE使用后深度填充插件 https://github.com/buunguyen/mongoose-deep-populate它神奇地修复了它。我猜问题出在 userSchema 的嵌套上。仍然不确定问题到底是什么,但至少已经解决了。