私はいつも結果がnullの場合にキャッチするのにif (!result)
を使用しますが、何らかの理由でここでは動作しません。mongodbの結果はnullですが、((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 });
});
}
そして、これがif (!data) {
でコールバックがこのNULL値をキャッチされていませんどのように来る私のコンソール出力
のですか?
um、return *? –
@Jonasw yah、私はコールバックがリターンと同じであると思った、私はそう思わない:-) – torbenrudgaard
BTW。あなたが間違って受け入れた答え。コールバック引数は 'callback(err、response)'(一般的な言い回しでは2つの引数を意味する)です。問題は、あなたが 'single '引数を渡しているだけで、' err'部分として解釈されます。あなたの最後の呼び出しは 'callback(null、percent:data.percent);'でなければなりません。 'err'は' null'とみなされ、 'response'は返された実際のデータです。 –