首页 文章

猫鼬:父母在没有参考的情况下填充

提问于
浏览
2

在我的node.js mongoose应用程序中,我有一个父项和一个子模式,它们具有彼此的引用:

var PersonSchema = new Schema({
    name    : String
  , age     : Number
  , stories : [{ type: Schema.ObjectId, ref: 'Story' }]
});

var StorySchema = new Schema({
    _creator : { type: Schema.ObjectId, ref: 'Person' }
  , title    : String
  , fans     : [{ type: Schema.ObjectId, ref: 'Person' }]
});

现在,我可以通过以下方式填充所有故事:

Person.findOne({ name: "some name"}).populate('stories').exec(...);

最近我意识到,像个人故事一样不断增长的阵列会降低 huge 阵列的性能 . 所以我想改变它,因为在我的情况下,阵列增长非常快并且变得巨大 . 我的解决方案似乎很容易 . 我将人员架构更改为

var PersonSchema = new Schema({
    name    : String
  , age     : Number
});

只有StorySchema持有裁判 .

现在的问题是:有没有办法或解决方法来填充我个人的故事呢?

2 回答

  • 1

    你可以随时做:

    var Script = mongoose.model('Script');  
    Person.findOne({ name: "some name" }, function(err, person) {
        Script.find({ _creator: person._id }, function(err, scripts) {
            person.scripts = scripts;
            ...
        })
    })
    

    希望可能有所帮助 .

  • 0

    看看新功能“填充虚拟”,它将使您的生活更轻松

相关问题