考虑到多个whereArrayContains()不起作用,我对嵌套HashMap上的多个whereEqualTo()有问题。
我正在用firebase制作简单的聊天应用程序,在某种程度上,我需要确定来自firestore的聊天文档是否存在两个用户ids。我当前的聊天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,所有的东西都在那里。我遗漏了什么?
提前谢谢。
发布于 2019-02-06 07:53:30
您的代码看起来可能是在尝试将数据库中的布尔值与字符串进行比较。如果数据库中有布尔类型字段,则还应该在查询中使用布尔类型值(而不是用引号括起来的字符串)。始终确保类型匹配。
https://stackoverflow.com/questions/54544303
复制相似问题