考虑到多个whereArrayContains()无法正常工作,我在嵌套HashMap上存在多个whereEqualTo()问题。
我正在使用Firebase制作简单的聊天应用程序,在某种程度上,我需要确定是否存在来自两个用户ID的Firestore聊天文档。我当前用于聊天的Firestore设置是:
chatId : {
lastMessageText: string
lastMessageTime: long
memberIds: {
userId1 : true
userId2 : true
}
}
我的代码是:
chatsCollection
.whereEqualTo("memberIds., + currentUser.getUsername() "true") // which is memberIds.userId1
.whereEqualTo("memberIds." + opponentUser.getUsername(), "true")
.get()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
if (!task.getResult().isEmpty()) {
// some logic
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
});
,但始终返回空结果。我检查了是否可以放火,那里什么都有。我想念什么?
谢谢。
答案 0 :(得分:0)
您的代码似乎正在尝试将数据库中的布尔值与字符串进行比较。如果数据库中有布尔类型字段,则还应该在查询中使用布尔类型值(而不是带引号的字符串)。始终确保类型匹配。