Я пытаюсь заполнить дочерний документ ["ENROLLMENTS"] внешним ключом, но при наличии нескольких совпадений он возвращает массив заявок внутри массива.Когда есть только одно совпадение, он возвращает один массив с одним объектом.Не уверен, почему это происходит или исправление.
ожидается: зачисления [{...}, {...}, {...}]
фактические: зачисления [[{...}, {...}, {...}]]
Ниже у меня есть схема для клиента, который имеет виртуальный для регистрации.Они связаны комбинацией клавиш присваивателя и значения.В настоящее время я пытаюсь использовать значение для заполнения документа.
Я открыт и для других решений.
Вот схема клиента
const clientSchema = new Schema({
identifiers: [
{
value: { type: String, required: true },
use: { type: String },
assigner: { type: String, required: true },
_id: false
}
],
...
},
{
timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
toJSON: { virtuals: true }
}
);
Вот мой виртуал с зачислениями, которые пытаются сопоставить в поле значения.
clientSchema.virtual('enrollments', {
ref: 'Enrollment',
localField: 'identifiers.value',
foreignField: 'subject.value',
justOne: false
});
Вот схема регистрации
const enrollmentSchema = new Schema(
{
organization: { type: String, ref: 'Organization' },
identifiers: [
{
value: { type: String, required: true },
assigner: { type: String, required: true },
_id: false
}
],
subject: {
value: { type: String, required: true },
assigner: { type: String, required: true },
_id: false
},
enrollmentDate: { type: Date, required: true },
...
},
{
timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
toJSON: { virtuals: true }
});
Вот мой метод заполнения
return await Client.find(query)
.populate({
path: 'enrollments',
model: 'Enrollment',
populate: {
path: 'progressNotes',
model: 'ProgressNote',
options: {
limit: 30,
sort: { 'performed.period.start': -1 }
}
},
})
.select(Projections.CLIENT_FULL_WITH_ENROLLMENTS())
.exec();
Вот то, что я получил, вернув
enrollments": [
[
{
"subject": {
"assigner": "2.16.840.1.113883.3.3519.6.1.32",
"value": "5"
},
"identifiers": [
{
"value": "52",
"assigner": "2.16.840.1.113883.3.3519.6.1.32"
}
],
"_id": "5b1981dfac3d5a000fb92fc3",
"progressNotes": [],
"id": "5b1981dfac3d5a000fb92fc3"
},
{
"subject": {
"assigner": "2.16.840.1.113883.3.3519.6.1.32",
"value": "5"
},
"identifiers": [
{
"value": "7",
"assigner": "2.16.840.1.113883.3.3519.6.1.32"
}
],
"_id": "5b1981dfac3d5a000fb92fc2",
"progressNotes": [],
}
],
"id": "5b1981dfac3d5a000fb92fc2"
}
]
],