0

我正在阅读一本关于使用节点、骨干网和 mongodb 构建 Web 应用程序的书。我从书中得到了样本并遇到了一个代码片段,这让我很困惑。

  var login = function(email, password, callback) {
    var shaSum = crypto.createHash('sha256');
    shaSum.update(password);
    Account.findOne({email:email,password:shaSum.digest('hex')},function(err,doc){
      callback(null!=doc);
    });
  };  

看看回调函数 null!=doc 的参数,我知道在 javascript 中意味着 null 不等于 doc,但是你为什么可以将它用作参数。

4

2 回答 2

4

null!=doc被评估为布尔值并将结果传递给callback,仅此而已。

这与拥有相同:

var docIsNull = null!=doc;
callback(docIsNull);

我不确定具体方法的结果,但它只是为回调提供trueor false,无论该doc值是否null

我猜如果docnull,这意味着没有找到具有该特定密码的特定电子邮件。所以当你打电话时login,你可能会使用:

login("some email", "some password", function (authenticated) {
    if (authenticated) {
        // email/password found and matched
    } else {
        // no match
    }
});
于 2013-05-11T18:37:45.190 回答
-2

似乎正在发生的事情如下。当调用该函数时,nul 将从 doc 继承一个真值,然后将其用于处理回调函数。这里发生的情况是,当 null 不等于 doc 时,将处理回调函数,因为知道 null 不等于 doc。如果我们对函数和正在发生的事情有更多的了解,我可能会更加详尽,但到目前为止,我只能说正在发生的事情。

于 2013-05-11T18:35:41.787 回答