Firestore - 为什么我的空字段不为空?

问题描述

我在申请时偶然发现了一个非常奇怪的错误。有一个功能,点击按钮用户可以从存储中删除整个 Firestore 文档和相应的文件。我将图片的整个 URL 存储在文档内的字符串字段中 - 但这个 url 可以为空,这是我的问题。我检查这个 URL 字段是否为空,但不知何故我的代码设法跳过这个逻辑语句并尝试删除文件,这就是我得到一个很好的空指针异常的地方。

docRef = fStore.collection("ActiveJobs").document(docID);
    docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) {
            if (documentSnapshot.exists()) {
                if (documentSnapshot.getString("jobPictureUrl") != null || documentSnapshot.get("jobPictureUrl) != null) {
                    String pictureUrl = documentSnapshot.getString("jobPictureUrl");
                    storageRef = fStorage.getReferenceFromUrl(pictureUrl);
                    storageRef.delete();
                }
            }
        }
    });

如您所见,我确实以两种不同的方式检查此字段是否为空,但不知何故此语句总是返回它不为空,并且我的 storageRef 行获得空指针异常,因为上面的图片Url 是空的。我试图检查 pictureUrl 是否为空,但仍然出现相同的错误...

This is how I store the empty string field

希望您能帮助我,感谢您阅读本文!

解决方法

jobPictureUrl 字段不是空成员。这是一个空的 String

所以,你必须检查 String 是否为空;但目前您正在进行 null 检查。

if (!documentSnapshot.getString("jobPictureUrl").isEmpty()) {
}

isEmpty() - 当且仅当字符串 true 为 0 时返回 length()