【问题标题】:Node.js and mongoose (mongodb) error cannot read property '' of nullNode.js 和 mongoose (mongodb) 错误无法读取属性 '' of null
【发布时间】:2012-10-03 22:32:25
【问题描述】:

我有一个 findOne 查询,当我验证它是否返回一个空文档时,我会收到一条错误消息,提示“无法读取属性 'username' of null”。当我尝试在 if(!doc.username) {

中访问 doc.username 时发生这种情况

我的代码:

function checkAccDb(username, password) { console.log(2);
    /* Check if accounts exists in db */
    db.findOne({username: username}, function(err, doc){ console.log(3);
        if(err) throw err;

        if(!doc.username) {
            add2stack(username, password);
        }
        else if(doc.status == 200) {
            end(username, password, 1000);
        }
        else if(doc.status == 401) {
            if(doc.password == password)
                end(username, password, 401);
            else
                add2stack(username, password);
        }
        else {
            add2stack(username, password);
        }
    });
}

谁能解释一下这里发生了什么?

谢谢!

【问题讨论】:

  • 你在哪一行得到错误?

标签: node.js mongodb


【解决方案1】:

查询成功但未找到任何匹配项,因此errdoc 均为空。您需要检查 doc 是否为 null 并适当处理该情况。

【讨论】:

    【解决方案2】:

    典型的实现是这样的

    db.findOne({username: username},function(err, doc) {
      if (err) {
        // handle error
      }
      if(doc != null)
      {
        if(!doc.username)
        {
            //handle case
        }
        else
        {
            //handle case
        }
      }
    });
    

    【讨论】:

      【解决方案3】:

      要获得解决方案,请检查以下内容。 1.检查您定义的模型名称或所有模型所在文件夹的名称必须正确,因为在我定义了所有模型的模型文件夹中,我使用不同的模型名称,因此没有模型命名为,这就是我得到的错误。 2.检查其所在的架构名称或文件夹名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2015-03-20
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多