【发布时间】:2020-11-30 14:23:15
【问题描述】:
我有一个类似于测验应用程序的东西,用户应该在提交后回答并查看结果。我将结果保存在 mongoDB 数据库中并使用 foreach 循环,因为它不止一个问题,我想在保存文档后将结果发送给用户注意:保存文档并替换它工作正常。我的代码如下所示:
//answers model
const User_Result = require("../models/result_model")
router.post("/quiz/results", (req, res)=>{
var lastResult = 1;
answersLenght.forEach((single, i) => {
if(i==0) { //for the first right answer it should creat a document
var result = new User_Result({
id: req.user._id,
endResult: lastResult
})
result.save()
} else { // for other answers it should update endResult
lastResult = lastResult + 1
User_Result.findOneAndReplace({_id: req.user._id}, {endResult: lastResult}, {new: true}, (err, r)=>{console.log(r)})
}
})
//it send empty []
User_Result.find({_id: req.user._id}).then(data=>{
res.send(data)
})
})
它发送空的 [ ] 因为它会在保存之前查找文档
【问题讨论】:
-
你真的需要做多个mongodb请求吗?您不能先将答案对象合并到
endResult,然后将其存储在一个请求中吗? -
你能解释更多吗?
-
真的不清楚你在这里要做什么以及
answersLenght的价值是什么。另外,您要查找和/或更新什么User_Results?看起来您在重复写入同一个 mongo 对象。
标签: javascript node.js mongodb mongoose async-await