Я хочу, чтобы пользователь мог загружать группу, если у них есть группа в их списке, как бы я написал правило для этого?Могу ли я создать правило в firebase, которое будет запрашивать значение в массиве push()?
Или есть способ написать правило для поиска значения в массиве pushbase?
Например, я хотел бы написать правило, может выглядеть следующим образом. Это правило неверно, но с целью объяснить мою точку зрения.
"groups":{
"$group_id":{
".read":"root.child('users').child(auth.uid).child('groups').hasChildValue().val() == $group_id"
}
},
Я только хочу, чтобы пользователь мог загрузить группу, если у них есть группа в их списке, как бы я написать правило для этого?
Обновление, как я его исправил. - Реструктуризация данных, которые будут плоскими. Избавьтесь от использования push() для добавления значений. - Плоские данные упростили обращение к клавишам.
"groups":{
// root/users/auth.uid/groups/$group_id
"$group_id":{
// only read if the user has the group_id
".read":"root.child('users').child(auth.uid).child('groups').child($group_id).exists()",
// only write if logged in and it's new || if the user has group id
".write":"(auth != null && !data.exists() && newData.exists()) || root.child('users').child(auth.uid).child('groups').child($group_id).exists()"
}
},
".read": "root.child ('users'). Child (auth.uid) .child ('groups'). HasChild ($ group_id)", - это работает, если group_id является push auto_id, но не получает меня, что я хочу. – Branflake2267
Может быть .forEach может работать. Я не уверен, что возвращаемое значение forEach есть, если вы возвращаете false в функцию. В противном случае вы можете изменить свою модель. Я думаю, что ваши данные выглядят так: https://www.firebase.com/docs/web/guide/structuring-data.html#section-indices – meriouma
Не существует .forEach для правил, если я не пропущу что нибудь. Я смотрю на добавление других отношений, поэтому я могу сделать его двунаправленным, поэтому я могу ссылаться на него без необходимости бурить массив push. – Branflake2267