【发布时间】:2019-05-12 18:11:19
【问题描述】:
我正在阅读 mongoosejs 文档并使用填充方法并使用“ref”填充有点难以理解
var personSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
age: Number,
stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var storySchema = Schema({
author: { type: Schema.Types.ObjectId, ref: 'Person' },
title: String,
fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
var Story = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);
所以这是一个例子,文档说 ref: 引用我们应该使用哪个模型,但在这种情况下,作者对 person 有 ref,它的类型是 objectId,它如何存储整个模式(_id、name、age ,stories) 和 stories 属性相同,它如何存储整个模式(在猫鼬语言“文档”中)。
Story.
findOne({ title: 'Casino Royale' }).
populate('author').
exec(function (err, story) {
if (err) return handleError(err);
console.log('The author is %s', story.author.name);
// prints "The author is Ian Fleming"
});
在这里,当我分析此代码时,会在故事模型中找到标题字段,然后它也会在故事模型中获取作者属性,然后从第二个模式中获取名称。如代码所示,作者引用了 person 模型,但我承认它的类型是 objectId,它如何存储整个模式(_id、name、age、stories)
如果有人可以解释这一点 更多细节,他们将帮助许多像我一样没有得到它的人
【问题讨论】: