我有一个类似智力竞赛的应用程序,用户应该在提交后回答并查看结果。我将结果保存在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)
})
})
它发送空[],因为它在保存之前会查找文档
您正在使用id
:保存User_Result文档
var result = new User_Result({
id: req.user._id,
endResult: lastResult
})
但是,您正在使用_id
查询User_Result文档。
您要做的是将_id
设置为req.user._id
,如下所示:
//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)
})
})