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(