【发布时间】:2021-08-26 19:25:52
【问题描述】:
我有两个架构:
AnswerSchema:{
"_id" : ObjectId("5ebe4b26b6fe863e4084a718"),
"userId" : ObjectId("5ebd093989cae1746c348b2d"),
"answersArray" : [
{
"_id" : ObjectId("5ebe4b26b6fe863e4084a71a"),
"questionId" : ObjectId("5ebe31b22e13a22862f32ff7"),
"answerId" : ObjectId("5ebe31b22e13a22862f32ffb")
},
{
"_id" : ObjectId("5ebe4b26b6fe863e4084a719"),
"questionId" : ObjectId("5ebe32672e13a22862f32ffc"),
"answerId" : ObjectId("5ebe32672e13a22862f32fff")
}
],
"__v" : 0
}
Question Schema{
"_id" : ObjectId("5ebe31b22e13a22862f32ff7"),
"questionNumber" : 1,
"options" : [
{
"_id" : ObjectId("5ebe31b22e13a22862f32ffb"),
"image" : "/Qusetion1/Coffee.png",
"title" : "Coffee"
},
{
"_id" : ObjectId("5ebe31b22e13a22862f32ffa"),
"image" : "/Qusetion1/Drinks.png",
"title" : "Drinks"
},
{
"_id" : ObjectId("5ebe31b22e13a22862f32ff9"),
"image" : "/Qusetion1/Marijuana.png",
"title" : "Marijuana"
},
{
"_id" : ObjectId("5ebe31b22e13a22862f32ff8"),
"image" : "/Qusetion1/PreferNottoSay.png",
"title" : "Prefer Not to Say"
}
],
"__v" : 0
}
answerArray 的 answerId 字段存在于 questionSchema 的选项中
我想用与answerId 匹配的选项填充answerId。
我使用的查询是:
let filter = {
userId: req.userInfo
}
models.answers.find(filter).populate([{
path:('answersArray.answerId'),
model:('Question'),
select:('options')
},
{
path:('answersArray.questionId'),
model:('Question'),
select:('questionNumber')
}
]).exec((err, result) => {
console.log(result)
if(err) {
response.status(400).send({
success: false,
message: errorHandler.getErrorMessage(err)
})
} else {
response.status(200).send({
success: true,
message: "User Profile",
})
}
})
这是给我的
{
"_id": "5ebe4b26b6fe863e4084a718",
"userId": "5ebd093989cae1746c348b2d",
"answersArray": [
{
"_id": "5ebe4b26b6fe863e4084a71a",
"questionId": {
"_id": "5ebe31b22e13a22862f32ff7",
"questionNumber": 1
},
"answerId": null
},
{
"_id": "5ebe4b26b6fe863e4084a719",
"questionId": {
"_id": "5ebe32672e13a22862f32ffc",
"questionNumber": 2
},
"answerId": null
}
],
"__v": 0
}
这是查询的结果
我期待的是
{
"_id": "5ebe4b26b6fe863e4084a718",
"userId": "5ebd093989cae1746c348b2d",
"answersArray": [
{
"_id": "5ebe4b26b6fe863e4084a71a",
"questionId": {
"_id": "5ebe31b22e13a22862f32ff7",
"questionNumber": 1
},
"answerId": {
"_id" : ObjectId("5ebe31b22e13a22862f32ffb"),
"image" : "/Qusetion1/Coffee.png",
"title" : "Coffee"
}
},
{
"_id": "5ebe4b26b6fe863e4084a719",
"questionId": {
"_id": "5ebe32672e13a22862f32ffc",
"questionNumber": 2
},
"answerId": {
"_id" : ObjectId("5ebe32672e13a22862f32fff"),
"image" : "/Qusetion1/Drinks.png",
"title" : "Drinks"
}
}
],
}
这是我对它的期望。
所以基本上我想从选项中填充字段answerId。
【问题讨论】:
-
你的问题现在又打开了。