2017-06-21 61 views
0

我總是使用if (!result)來捕獲結果爲空時,但由於某種原因,這只是在這裏不工作?!?mongodb的結果爲空,但是如果(!結果)沒有捕獲它

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

@Jonasw呀,我認爲回調將是一樣的回報,我想不是:-) – torbenrudgaard

+0

順便說一句。您接受的答案不正確。回調參數是'callback(err,response)'(通用術語表示兩個參數),問題是你只傳入一個** single **參數,它被解釋爲'err'部分。你最後一次調用應該是'callback(null,percent:data.percent);'所以'err'被認爲是'null','response'是實際發回的數據。 –

回答

1

在執行if (!data) { ... }之後,代碼中的任何內容都不會停止執行。 (或者,對於這個問題,if (err) { ... }等)

最有可能你只是想return false;什麼調用callback()功能

後,如果拋出一個console.log()if塊內,它應該顯示的代碼正在進入該塊。

+0

啊,你是對的Justin! - 我認爲回調就足夠了,但是在每次回調之後,我都會回來,然後一切正常。 – torbenrudgaard

+0

太棒了!很高興幫助:) –