Я работаю с FireBase для общения в приложении в реальном времени.В настоящее время мне нужно иметь возможность использовать функцию upsert, которая возвращает «комнату» на основе пропущенных идентификаторов людей, независимо от порядка.
Например, ['1','2']
и ['2', '1']
должны возвращать одну и ту же комнату приupsert.
Вот текущий код для получения комнаты на основе идентификаторов, переданных в аргументах.
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']
, когда я вызываю upsert с идентификаторами в обратном порядке, это создаст новую комнату.
Прочитав Firebase документы о запросах , я не вижу отличного способа сделать это, кроме как МОЖЕТ сортировать идентификаторы до upsert, чтобы они постоянно находились в одном и том же порядке.
Мне любопытно, нашел ли кто-нибудь лучшее решение.