根据条件语句结束express.js请求

时间:2016-12-02 09:57:07

标签: javascript node.js express mongoose

我使用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语句中结束请求?

2 个答案:

答案 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);
        }
    });
});