【发布时间】:2017-04-17 04:39:10
【问题描述】:
我正在使用 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 语句中结束请求?
【问题讨论】:
-
@AJS 已经在里面了。它位于
companyTotal.findOne().的右括号之前 -
尝试在 res.json(content) 之前添加“return”;
-
试试这个:
function sendJsonResponse(res, status, content) { return res.status(status).json(content); } -
@TanLe 我试过return语句。它仍然会添加数据并给我
can't set headers after they are sent错误。 -
@Niezborala 我尝试了返回语句。它仍然会添加数据并给我
can't set headers after they are sent错误。
标签: javascript node.js express mongoose