我使用mongoose中的Model.findOne
方法查找并向文档中添加一些新数据。添加了哪种数据基于条件if
语句。见下文:
companyTotal.findOne({companyName: "xyz"}, function (err, doc) {
if (err) {
sendJsonResponse(res, 400, err)
} else if (doc) {
if (req.body.q1 === "poor") {
doc.poor += 1;
} else if (req.body.q1 === "okay") {
doc.okay += 1;
} else if (req.body.q1 === "well") {
doc.well += 1;
} else if (req.body.q1 === "very well") {
doc.veryWell += 1;
} else {
sendJsonResponse(res, 401, {"message": "Wrong data entry."})
}
}
doc.save(function (err, data) {
if (err) {
sendJsonResponse(res, 400, err)
} else {
sendJsonResponse(res, 200, data);
}
});
});
如果没有满足任何条件语句,我想结束请求并发回错误消息。我正在使用sendJsonResponse
函数来处理需要与状态代码一起发送给用户的任何类型的响应。
function sendJsonResponse(res, status, content) {
res.status(status);
res.json(content);
}
根据我的知识res.json
调用res.end();
然后结束请求。但每次不满足条件时,它都会显示错误消息但仍然运行doc.save()
方法并将数据添加到文档中。
我做错了什么?如果条件不满足,如何在if
语句中结束请求?
答案 0 :(得分:0)
将标志变量定义为
flag=0 ;
然后
else {
flag++;
sendJsonResponse(res, 401, {"message": "Wrong data entry."})
}
然后
if (flag ==0 ){
doc.save(function (err, data) {
if (err) {
sendJsonResponse(res, 400, err)
} else {
sendJsonResponse(res, 200, data);
}
});
}
答案 1 :(得分:0)
在我看来,它应该是这样的:
function sendJsonResponse(res, status, content) {
return res.status(status).json(content); // you can send response only one
}
和
companyTotal.findOne({companyName: "xyz"}, function (err, doc) {
if (err) {
return sendJsonResponse(res, 400, err);
} else if (doc) {
if (req.body.q1 === "poor") {
doc.poor += 1;
} else if (req.body.q1 === "okay") {
doc.okay += 1;
} else if (req.body.q1 === "well") {
doc.well += 1;
} else if (req.body.q1 === "very well") {
doc.veryWell += 1;
} else {
return sendJsonResponse(res, 401, {"message": "Wrong data entry."});
}
}
doc.save(function (err, data) {
if (err) {
return sendJsonResponse(res, 400, err);
} else {
return sendJsonResponse(res, 200, data);
}
});
});