尝试获取MongoDB中用户的密码时出现NullPointerException

时间:2017-05-26 01:49:22

标签: mongodb

当我尝试验证登录时,我不断收到NullPointerException。

public boolean checkPassword(String name, String password) {

    FindIterable<Document> user = null; 

    user = collection1.find(new Document("_id", name));
    if (user == null) {
        System.out.println("User not in database");
    }

    String passwordDB = user.first().get("password").toString();
    String passwordSplitted = passwordDB.split(",")[1];

    if (password.equals(passwordSplitted)) {
        return true;
    }
    return false;
}

问题出在这里?任何解决方案?

1 个答案:

答案 0 :(得分:1)

尽管如@Amit指出的那样,它需要异常堆栈跟踪来识别它的确切原因。但是,代码中几乎没有什么可以改进的地方: -

  1. if (user == null) { System.out.println("User not in database"); } String passwordDB = user.first().get("password").toString(); // this is still reached. if (user == null) { System.out.println("User not in database"); return false; // inferring your shared piece of code for default returns false } ,检查不会阻止您的代码投放NPE

    String passwordSplitted = passwordDB.split(",")[1]
    

    如果没有找到文档,您可能希望将该块的其余部分返回或放入else中。

    apply plugin: 'kotlin-android-extensions'
  2. 确保您分割的字符串中包含字符itemView.tv_title。由于您在代码行中分隔后访问第二个子字符串 -

    ViewHolder