我正在使用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进行排序以使它们以相同的顺序连续进行之外,我看不到一种实现此目的的好方法。
我很好奇是否有人找到了更好的解决方案。