現在、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(