为什么他们在Mongoose Population中使用ObjectId和Number?
在这个例子中,他们使用ObjectId
创buildpersonSchema
来引用Story
,这个我明白。 但是在storySchema
为什么他们不这样做来引用这个人呢?
或者反过来:为什么使用ObjectId而不是Number in Person?
var mongoose = require('mongoose') , Schema = mongoose.Schema var personSchema = Schema({ _id : Number, name : String, age : Number, stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }] }); var storySchema = Schema({ _creator : { type: Number, ref: 'Person' }, title : String, fans : [{ type: Number, ref: 'Person' }] }); var Story = mongoose.model('Story', storySchema); var Person = mongoose.model('Person', personSchema);
引用的types必须与被引用模式的_id
属性相同。
在personSchema
的情况下,这是一个Number
。
另一方面, storySchema
具有由mongoose自动分配的_id
字段 – 它不在模式构造函数的参数中指定。
如果没有传递给Schema构造函数,Mongoose默认为每个模式分配一个_id字段。 被攻击的types是与MongoDB默认行为一致的ObjectId