現在、ObjectIdのみ _idを参照する値 別のコレクションのrefsとして使用できます 。
ここに1つのディスカッションがあります
ただし、将来的には1つの機能強化になる可能性があります。
実際には、defaultを追加する必要はありません。 populateの値 フィールドで、fooAccessTypeを定義するだけです 以下のように
fooAccessType: {
type: String,
ref: 'AccessType'
},
populationの場合
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID populationで使用されます 、およびObjectId は12バイトのBSONタイプであり、以下を使用して構築されます。
つまり、SuperAdmin 正しいObjectIDではありません 。 UUID
を使用できます ObjectIDのデフォルト値として
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
ただし、上記のコードは奇妙です。fooAccesType AccessTypeへの参照です ドキュメント。
fieldを保存しようとしたとき ドキュメント、AccessType 最初に保存してから、ObjectIDを取得する必要があります この保存されたAccessTypeから それをfooAccessTypeに割り当てます 、最終的には、新しいfieldを保存します ドキュメント。
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
populationの場合
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(