以任何顺序过滤ID数组上的Firebase查询以返回相同结果

时间:2019-06-18 19:53:41

标签: javascript firebase google-cloud-firestore

我正在使用Firebase在应用程序中进行实时通信。当前,我需要有一个upsert函数,该函数可以根据传递的人员ID而不考虑顺序来返回“房间”。

例如,['1','2']['2', '1']应该在upsert中返回相同的空间。

这是当前代码,用于基于在args中传递的ID来获得会议室。

if (Array.isArray(args.peopleIds)) {
    const existingRoom = await admin
      .firestore()
      .collection('rooms')
      .where('peopleIds', '==', args.peopleIds)
      .get()

    if (!existingRoom.empty) {
      const doc = existingRoom.docs[0]
      return { id: doc.id, ...doc.data() }
    }
  }

当前,如果我在Firebase中的一个房间的peopleIds为['1', '2'],则当我以相反的顺序调用带有ID的upsert时,它将创建一个新房间。

在阅读了Firebase docs on querying之后,除了可以在upsert之前对id进行排序以使它们以相同的顺序连续进行之外,我看不到一种实现此目的的好方法。

我很好奇是否有人找到了更好的解决方案。

0 个答案:

没有答案