Populate的MongoDB模式

时间:2017-09-18 14:40:16

标签: mongoose populate

我真的认为这应该是我在架构上的最后一个问题,我的系统的其余部分现在运行得非常好。到目前为止,人口对我来说运作良好,我只能怀疑我的架构需要稍微调整一下才能正常工作,就像这样:

// =======================================
// schema.js

var UsersSchema = new Schema({
    display_name    : String,
    email               : String
});
var UserSocialMediaSchema = new Schema({
    user_id             : {type: Schema.Types.ObjectId, ref: 'Users'},
    account_id          : Number,
    profile_picture : String
});
var UserSocialMediaFriends = new Schema({
    user_id     : {type: Schema.Types.ObjectId, ref: 'User_SocialMedia'},
    user_a_account_id   : Number,
    user_b_account_id   : Number
});
var PostsSchema = new Schema({
    user_id         : {type: Schema.Types.ObjectId, ref: 'User_SocialMedia'},
    from_id         : Number,
    from_name:  String,
    post_type       : String,
    body                : String
});

var users = mongoose.model('Users',UsersSchema);
var userSocialMedia = mongoose.model('User_SocialMedia',UserSocialMediaSchema);
var userSocialMediaFriends = mongoose.model('User_SocialMediaFriends',UserSocialMediaFriends);
var posts = mongoose.model('Posts',PostsSchema);

module.exports = {
    Users: users,
    User_SocialMedia: userSocialMedia,
    User_SocialMediaFriends: userSocialMediaFriends,
    Posts: posts,
};

// =======================================
// module.js

var db = require('./schema.js');

// ...

db.Posts.find({_id:{$in:post_ids}}).populate('user_id').exec().then(function(data){

  for (var i in data) {
      // data[i].user_id = null
  }
});

任何人都可以解释为什么我在这里找到null这个查找的值是正确的,以及我如何纠正?是因为有两个模型指向User_SocialMedia?

感谢。

0 个答案:

没有答案