来自mongodb的结果为null,但是如果(!result)没有捕获它

时间:2017-06-21 20:34:13

标签: javascript node.js

我总是使用if (!result)来捕获结果为空时,但由于某种原因,这只是在这里不起作用?!

exports.getDiscount = function(req, callback) {

   var discountModel = require('../models/discountModel');
    var discountTable = mongoose.model('discountModel');
    discountTable.findOne (
        { _id: req.body.discount }
    ,function (err, data) {
        if (err) {callback( { error:true, err:new Error('findDiscount: ' + err) } )};

        console.log("data " + data)
        console.log("json: " + JSON.stringify(data, null, 4));
        if (!data) {
           callback( { error:true, err:"NOT FOUND: " + req.body.discount + " was not found" } )
        }
        console.log("WHY ARE YOU NOT STOPPING?!?!")
        console.log("data " + data)
        console.log("json: " + JSON.stringify(data, null, 4));

        if (Math.round(new Date().getTime()/1000) > data.expires) {
           callback( { error:true, err:"EXPIRED: " + new Date(data.expires*1000).toDateString() + " " } )
        } 
       callback( { error:false, percent:data.percent } );
    });
}

这是我的控制台输出

enter image description here

为什么if (!data) {的回调没有捕获此空值?

1 个答案:

答案 0 :(得分:1)

代码中没有任何内容在if (!data) { ... }执行后停止执行。 (或者,就此而言,if (err) { ... }等)

在调用return false;函数

之后,您很可能只想callback()或其他内容

如果你在console.log()块中抛出if,它应该显示代码正在进入块。