如何检查数组在Firestore中是否包含两个特定的字符串?

时间:2019-03-16 20:25:04

标签: firebase nosql google-cloud-firestore

我正在尝试创建一个聊天应用程序,该聊天应用程序最多可以有两个用户聊天室。 我得到了一个集合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中甚至可以用数组中的元素查询多个字符串吗?

1 个答案:

答案 0 :(得分:4)

如果要这样查询,则将需要其他数据结构。可以考虑这样的对象类型字段:

members: {
    'uid1': true,
    'uid2': true
}

然后您可以查询如下文档:

chatroomsCollection
    .where('members.uid1', '==', true)
    .where('members.uid2', '==', true)
    .limit(1)
    .get()