Приложение для знакомств - Какая структура базы данных мне нужна в Firebase Firestore для запросов всех пользователей, кроме тех, кто мне не понравился? - PullRequest
1 голос
/ 03 апреля 2019

Я создаю приложение для знакомств с React Native и Firebase Cloud Firestore . В моем приложении пользователи могут не любить других пользователей исключать их из следующего запроса.

Какую структуру базы данных я должен использовать для выполнения запроса Firestore ?


Когда вам кто-то не нравится, идентификатор пользователя будет храниться в массиве внутри вашего пользовательского документа. Запрос Firestore предоставляет только оператор «массив-содержащий» для фильтрации по значениям массива. Поэтому мне нужно запросить «массив-НЕ-содержит», но Firestore не предоставляет его.


структура моей базы данных Firestore :

collection ('user'). Doc ('userID'). Match.dislike [ dislikedUserID1, dislikedUserID2, ... ]

снимок экрана: База данных Firestore

1 Ответ

0 голосов
/ 03 апреля 2019

Вы правы, что where не предлагает предложение типа "array_does_not_contain".Просто сделайте менее квалифицированный запрос и вычтите из результатов.Это может быть расточительный запрос для кого-то, кому не нравятся, но при условии, что большинство людей восхитительны ...

const adorableMe = firebase.auth().currentUser
collection('user').where(/* they might think I'm a cutie pie */).get().then(snapshot => {
    // filter result to exclude the (tiny!) set of users who don't fancy me
    return snapshot.docs.filter(doc => !doc.data().dislikes.includes(adorableMe.id))
})
...