Saat ini, hanya ObjectId
nilai yang mengacu pada _id
koleksi lain dapat digunakan sebagai refs
.
Berikut adalah satu diskusi https://github.com/Automattic/mongoose/issues/2562
Namun, ini bisa menjadi salah satu peningkatan di masa depan.
Sebenarnya, tidak perlu menambahkan default
nilai untuk populate
bidang, cukup tentukan fooAccessType
seperti di bawah ini
fooAccessType: {
type: String,
ref: 'AccessType'
},
Untuk population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID
digunakan dalam population
, dan ObjectId
adalah tipe BSON 12-byte, dibuat menggunakan:
Jadi SuperAdmin
bukan satu ObjectID
yang benar . Anda dapat menggunakan UUID
sebagai nilai default ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Namun, kode di atas aneh, fooAccesType
adalah referensi ke AccessType
dokumen.
Saat mencoba menyimpan field
dokumen, AccessType
harus disimpan terlebih dahulu, lalu dapatkan ObjectID
dari AccessType
yang disimpan ini dan tetapkan ke fooAccessType
, akhirnya, simpan field
yang baru dokumen.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Untuk population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(