考虑到多个 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());
}
});
但总是返回空结果。我检查了 firestore,一切都在那里。我错过了什么?
提前致谢。
最佳答案
您的代码看起来像是在尝试将数据库中的 bool 值与字符串进行比较。如果数据库中有 bool 类型字段,则还应该在查询中使用 bool 类型值(而不是带引号的字符串)。始终确保类型匹配。
关于android - 在嵌套的 HashMap 上 Firestore 多个 whereEqualTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54544303/