Я только начинаю с Firebase и пытаюсь определить, как лучше структурировать мою базу данных Firestore.
Я хочу найти все документы из коллекции «событий», где «участники» (поле массива в каждом документе события, содержащее объекты с ключами «displayName» и «uid») содержит как минимумодин соответствующий идентификатор.Список идентификаторов, с которыми я сравниваю, станет друзьями пользователей.
Поэтому в более семантических терминах я хочу найти все события, в которых хотя бы один из участников этого события является «другом», используяUID участников мероприятия и друзей пользователей.
Надеюсь, я не потерял вас.Может быть, этот скриншот поможет.
Вот как я спроектировал коллекцию 'событий' прямо сейчас
Был бы такой глубокий запрос, как этот, с Firestore?Или мне нужно сделать фильтрацию на стороне клиента?
EDIT - добавлен код
// TODO: filter events to only those containing friends
// first get current users friend list
firebase.firestore().doc(`users/${this.props.currentUser.uid}`)
.get()
.then(doc => {
return doc.data().friends
})
.then(friends => { // 'friends' is array of uid's here
// query events from firestore where participants contains first friend
// note: I plan on changing this design so that it checks participants array for ALL friends rather than just first index.
// but this is just a test to get it working...
firebase.firestore().collection("events").where("participants", "array-contains", friends[0])
.get()
.then(events => {
// this is giving me ALL events rather than
// filtering by friend uid which is what I'd expect
console.log(events)
// update state with updateEvents()
//this.props.dispatch(updateEvents(events))
})
})
Я использую React-Native-Firebase
"react-native": "^0.55.0",
"react-native-firebase": "^4.3.8",