在Sails.js文档中,使用.exec(错误,结果)执行数据库查询,我们检查是否(!result)检查结果是否为空。
我正在用CoffeeScript构建一个npm模块。当它被转换为JavaScript时,即使结果为空,条件if(result)也会成功!
是否与CoffeeScript有关?
Bruteforce.find
where:
_id: _id
.exec (err, doc) ->
typeof callback == 'function' && callback(err, null) if err
data = {}
if doc && new Date(doc.expires).getTime() < new Date().getTime()
Bruteforce.destroy
_id: _id
.exec (err) ->
return callback(err) if err
return callback()
if doc // condition succeeds even doc is empty
data.count = doc.count
data.lastRequest = new Date(doc.lastRequest)
data.firstRequest = new Date(doc.firstRequest)
typeof callback == 'function' && callback(null, data)
else
typeof callback == 'function' && callback(null, null)
翻译的JavaScript
return Bruteforce.find({
where: {
_id: _id
}
}).exec(function(err, doc) {
var data;
if (err) {
typeof callback === 'function' && callback(err, null);
}
data = {};
if (doc && new Date(doc.expires).getTime() < new Date().getTime()) {
Bruteforce.destroy({
_id: _id
}).exec(function(err) {
if (err) {
return callback(err);
}
return callback();
});
}
if (doc) { // condition succeeds even doc is empty
data.count = doc.count;
data.lastRequest = new Date(doc.lastRequest);
data.firstRequest = new Date(doc.firstRequest);
return typeof callback === 'function' && callback(null, data);
} else {
return typeof callback === 'function' && callback(null, null);
}
});