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

Con*_*eer 2 nosql firebase google-cloud-firestore

我正在尝试制作一个聊天应用程序,该应用程序可以拥有最多两个用户的聊天室。我有一个包含两个用户 ID 的chatrooms数组字段的集合和聊天室文档members。在创建新聊天室之前知道我想检查两个特定用户是否已经一起使用了聊天室,因此我需要使用我的文档查询两个用户 ID。

最后,我只想检查聊天室是否存在,然后返回 false,然后尝试使用相同的两个特定用户 ID 创建另一个聊天室。

我的问题是数组内容的查询。

我试过

chatroomsCollection.where('members', '==', firstUserID).where('members', '==', secondUserID).limit(1).get() 
Run Code Online (Sandbox Code Playgroud)

并尝试

chatroomsCollection.where('members','array-contains', firstUserID).where('members', 'array-contains', secondUserID).limit(1).get()
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

甚至可以在 noSQL 中使用数组内的元素查询多个字符串吗?

Dou*_*son 6

如果您想这样查询,您将需要不同的数据结构。考虑一个像这样的对象类型字段:

members: {
    'uid1': true,
    'uid2': true
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样查询文档:

chatroomsCollection
    .where('members.uid1', '==', true)
    .where('members.uid2', '==', true)
    .limit(1)
    .get()
Run Code Online (Sandbox Code Playgroud)