I have a circle model in my project:
var circleSchema = new Schema({
//circleId: {type: String, unique: true, required: true},
patientID: {
type: Schema.Types.ObjectId,
ref: "patient"
},
circleName: String,
caregivers: [{
type: Schema.Types.ObjectId
}],
accessLevel: Schema.Types.Mixed
});
circleSchema.virtual('caregiver_details', {
ref: 'caregiver',
localField: 'caregivers',
foreignField: 'userId'
});
caregiver schema:
var caregiverSchema = new Schema({
userId: {
type: Schema.ObjectId,
unique: true
}, //objectId of user document
detailId: {
type: Schema.ObjectId,
ref: "contactDetails"
},
facialId: {
type: Schema.ObjectId,
ref: "facialLibrary"
}, //single image will be enough when using AWS rekognition
circleId: [{
type: Schema.Types.ObjectId,
ref: "circle"
}], //multiple circles can be present array of object id
});
Sample Object:
{
"_id": ObjectId("58cf4832a96e0e3d9cec6918"),
"patientID": ObjectId("58fea8ce91f54540c4afa3b4"),
"circleName": "circle1",
"caregivers": [
ObjectId("58fea81791f54540c4afa3b3"),
ObjectId("58fea7ca91f54540c4afa3b2")
],
"accessLevel": {
"location\"": true,
"notes": false,
"vitals": true
}
}
I have tried virtual populate for Mongoose but I am unable to get it to work. This seems to be the exact same problem: https://github.com/Automattic/mongoose/issues/4585
circle.find({
"patientID": req.user._id
}).populate('caregivers').exec(function(err, items) {
if (err) {
console.log(err);
return next(err)
}
res.json(200, items);
});
I am only getting the object ids in the result. It is not getting populated.