Фильтрация запроса firebase по массиву идентификаторов в любом порядке, чтобы вернуть тот же результат - PullRequest
2 голосов
/ 18 июня 2019

Я работаю с 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, чтобы они постоянно находились в одном и том же порядке.

Мне любопытно, нашел ли кто-нибудь лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...