参照したマングースのドキュメントの例では、Number
を使用しています personSchema._id
の場合 フィールド、およびObjectId
他の人のために。
どちらかを使用できることを示すためだけに、例でこれを行っていると思います。 _id
を指定しない場合 スキーマでは、ObjectId
デフォルトになります。
ここでは、すべてのレコードに_id
があります ObjectId
であるフィールド 、それでもあなたはそれらを数字のように扱っています。さらに、personID
のようなフィールド およびtaskID
それらを定義する部分を省略しない限り、存在しません。
すべての_id
に数字を使用したい場合 フィールドでは、スキーマでそれを定義する必要があります。
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
次に、特定のIDでニュースアイテムを作成し、それを作成者に割り当てます。
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
ただし、ここで注意すべきことは、ObjectId
以外のものを使用する場合です。 _id
として フィールドでは、これらの値を自分で管理する責任を負っています。 ObjectIdは自動生成され、追加の管理は必要ありません。
編集:あなたがあなたの協会の両側にrefを保存していることにも気づきました。これは完全に有効であり、時々実行したい場合もありますが、pre
に自分で参照を保存する必要があることに注意してください。 フック。