Mongoose populate()返回空数组

时间:2015-06-02 15:26:30

标签: mongodb mongoose

所以我已经花了4个小时,阅读了几次文档,但仍然无法弄清楚我的问题。我正在尝试对我的模型进行简单的填充()。 我有一个用户模型和商店模型。用户有一个favoriteStores数组,其中包含商店的_id。我正在寻找的是这个数组将填充Store详细信息。

user.model

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);
    });
}

另一个文件:

store.model

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"
    }
}

最喜欢的商店是空的,即使我只是在没有填充的情况下获得商店,它会显示商店的_id。

非常感谢任何帮助!谢谢;)

更新 使用deepPopulate plugin后,它神奇地修复了它。我想问题是userSchema的嵌套。仍然不确定问题究竟是什么,但至少它是固定的。

1 个答案:

答案 0 :(得分:1)

我认为在跨多个文件定义架构时会发生此问题。要解决此问题,请尝试以这种方式调用populate

.populate({path: 'favoriteStores', model: 'Store'})