java - 当我尝试查找不存在的文档时,我的代码抛出异常

标签 java mongodb

我的代码抛出此异常:线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException

当我输入mongodb在数据库中找不到的用户名或密码时,它会抛出它,我尝试了多种方式调试它,但我找不到抛出异常的语句。

问题是,当用户名或密码在数据库中不匹配时,我想向用户显示一条消息

public class GetEmployee {

MongoClient mongoClient = MongoClients.create();
MongoDatabase db = mongoClient.getDatabase("MirandasShoes");
MongoCollection<Document> collection = db.getCollection("Employees");

public Employee getEmployee(String username, String password) {
    FindIterable<Document> findIterable = collection.find(new Document("Username", username).append("Password", password));
    MongoCursor<Document> cursor = findIterable.iterator();
    Employee e = new Employee();
    if (cursor.hasNext()) {
        Document doc = cursor.next();
        //ArrayList<Object> o = new ArrayList<>(doc.values());
        e.setId(doc.get("_id").toString());
        e.setName(doc.get("Name").toString());
        e.setAddress(doc.get("Address").toString());
        e.setEmail(doc.get("Email").toString());
        e.setPhone(doc.get("Phone").toString());
        e.setUsername(doc.get("Username").toString());
        e.setPassword(doc.get("Password").toString());
    }
    return e;//Get the shoes
}

}

最佳答案

我的猜测是你的 collection.find()调用返回 null,因此当您调用 MongoCursor<Document> cursor = findIterable.iterator(); 时,findIterable 实际上是 null 并且没有 iterator() 方法。

尝试检查if (findIterable)就在您的collection.find()之后代码行。

关于java - 当我尝试查找不存在的文档时,我的代码抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010384/

相关文章:

java - 使用Java API访问HBase,第一次连接很慢。正常吗?

java - 当不在 pom 中时缺少 Artifact javax.activation :activation:jar:1. 0.2

java - Android网络客户端实现

mongodb - 仅当 MongoDB 文档字段不存在时,如何更新它们?

node.js - 如何使用mongoose在nodejs中转换日期格式

java - PL/SQL 函数的列索引无效

java - 从现有字符串获取新字符串的最佳方法

ruby-on-rails - Ruby 字符串到 Date 对象

node.js - 在 MongoDB 中分区数据的最佳实践是什么?

python - MongoDB,批量查找返回什么