2015-10-19 76 views
1

我使用Mongoose 4.1.12。我的模式:猫鼬:它没有找到引用它做了什么?

var UserSchema = new Schema({ 
    _id: {type: String}, // unique nickname 
    name: {type: String} 
}); 

var BookSchema = new Schema({ 
    authors: [{type: String,ref:"User"}] // list of nicknames 
}); 

让我们想象有2个用户注册,并昵称:伊戈尔克里斯蒂娜

还有与作者收集图书:伊戈尔克里斯蒂娜卢克

然后我做的:

Book.findOne({}).populate("authors").exec(function(err,book){...}) 

现在一本书只包含2在“作家”集合对象,因为卢克用户不存在

book: { 
    authors: [ 
     { _id: "igor", name: "Igor" }, 
     { _id: "kristina", name: "Kristina" } 
    ] 
} 

我希望这样的事情:

book: { 
    authors: [ 
     { _id: "igor", name: "Igor" }, 
     { _id: "kristina", name: "Kristina" }, 
     "luke" 
    ] 
} 

这可能吗?

回答

0

填充引用字段时,引用的基础文档不需要预先存在。

此外,尚未填入下面的参考文献场的时候,你要检索的文件与参考字段中的值将是:

  1. 空,如果你是在.populate(XXX)模式
  2. 裁判的
  3. 值否则

裁判联动在运行时发生

因此,在你找到的书,因为你正在使用模式的预计显示上方:.populate()最后作者数组元素'luke'将显示为空,因为底层'用户'文档缺失

+0

我编辑了我的帖子,使问题更清晰,请您再看看一下? – igorpavlov

相关问题