我正在使用Mongoose / MongoDB构建应用程序
我有一个类似于
的Question模式 const questionSchema = new Schema({
text: String,
responses: [ResponseSchema]
});
(pseudo code for adding userResponse virtual property)
questionSchema.addVirtual(userResponse)
还有一个类似于
的Response子文档 const responseSchema = new Schema({
_id: { type: Schema.Types.ObjectId, ref: 'User' },
response: String
});
Response子文档中的每个记录均包含用户的ID,以及他们对问题的回答(“是”或“否”)。另外,当用户登录到我的应用程序时,passport.js将其id存储在服务器中的req.user.id
中我的目标::当Express API被告知要回答所有问题时,我想用登录用户的(req.user。)填充虚拟属性 userResponse 。 id)作为对MongoDB数据库查询的一部分来回答每个问题。
app.get('/api/questions', async (req, res) => {
const questions = await Question.find({})
.populateVirtual(userResponse, currentQuestion.responses[req.user.id])
res.send(questions);
});
显然,Question.populateVirtual不是一个真正的方法,但这是我要实现的伪代码。谢谢!