我正在尝试创建一个聊天应用程序,该聊天应用程序最多可以有两个用户聊天室。
我得到了一个集合chatrooms
和一个聊天室文档,它们的数组字段为members
,其中包含两个用户ID。
在我可以创建一个新的聊天室之前要知道,我想检查两个特定的用户是否已经一起拥有一个聊天室,因此我需要用我的文档查询两个用户ID。
最后,我只想检查一个聊天室是否存在,然后返回false,然后尝试使用相同的两个特定用户ID创建另一个聊天室。
我的问题是查询数组内容。
我尝试过
chatroomsCollection.where('members', '==', firstUserID).where('members', '==', secondUserID).limit(1).get()
并尝试
chatroomsCollection.where('members','array-contains', firstUserID).where('members', 'array-contains', secondUserID).limit(1).get()
但是它不起作用。
在noSQL中甚至可以用数组中的元素查询多个字符串吗?
答案 0 :(得分:4)
如果要这样查询,则将需要其他数据结构。可以考虑这样的对象类型字段:
members: {
'uid1': true,
'uid2': true
}
然后您可以查询如下文档:
chatroomsCollection
.where('members.uid1', '==', true)
.where('members.uid2', '==', true)
.limit(1)
.get()