在this示例中,他们使用personSchema
创建ObjectId
来引用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);
答案 0 :(得分:3)
引用类型必须与引用的模式的_id
属性相同。
如果是personSchema
,则为Number
。
storySchema
具有由mongoose自动分配的_id
字段 - 它未在模式构造函数的参数中指定。
默认情况下,如果未将一个模式传递给模式构造函数,则Mongoose会为每个模式分配一个_id字段。 assiged类型是一个ObjectId,与MongoDBs默认行为一致