Hiện tại, chỉ ObjectId các giá trị tham chiếu đến _id của một bộ sưu tập khác có thể được sử dụng làm refs .
Đây là một cuộc thảo luận https://github.com/Automattic/mongoose/issues/2562
Tuy nhiên, nó có thể là một cải tiến trong tương lai.
Trên thực tế, không cần thêm default giá trị để populate , chỉ cần xác định fooAccessType như bên dưới
fooAccessType: {
type: String,
ref: 'AccessType'
},
Đối với population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID được sử dụng trong population và ObjectId là loại BSON 12 byte, được xây dựng bằng:
Vì vậy, SuperAdmin không đúng ObjectID . Bạn có thể sử dụng UUID
làm giá trị mặc định của ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Tuy nhiên, đoạn mã trên rất lạ, fooAccesType là tham chiếu đến AccessType tài liệu.
Khi cố gắng lưu trường field tài liệu, AccessType trước tiên nên được lưu, sau đó lấy ObjectID từ AccessType đã lưu này và gán nó cho fooAccessType , cuối cùng, lưu trường field mới tài liệu.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Đối với population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(