Я использую плоский макет базы данных с продуктами, у которых есть пользователи, макет базы данных выглядит следующим образом. Это широко используемый «плоский» способ работы с данными Firebase.
Now I have a route, the user can visit: /products/1, which should load the users for that product
Так что в основном мне нужно попросить Firebase предоставить мне информацию о пользователях для пользователей этого продукта. (так для 1 и 2 в моем примере)
Каков хороший способ сделать это?
products: [
{
id: 1,
name: 'Product One',
users: [
1: true,
2: true
]
}
],
users: [
{
id: 1,
name: Tom
}
]

Есть два основных варианта
Дублируйте основные данные для каждого пользователя под каждым продуктом. Например: если вам нужно отобразить имя пользователя для каждого пользователя с продуктом, вы можете сохранить имя каждого пользователя под каждым продуктом:
products: [
{
id: 1,
name: 'Product One',
users: [
1: "Tom",
2: "Notflip"
]
}
],
С этой структурой данных вам просто нужно загрузить узел продукта, никаких соединений (ни на стороне сервера, ни на стороне клиента) не требуется. Если вы имеете опыт работы с реляционными базами данных, это, вероятно, вызовет все ваши «сигналы нормализации», но в базах данных NoSQL этот тип дублирования данных довольно распространен. Хотя это делает операции записи более сложными (из-за необходимости разветвления данных), это делает операции чтения действительно простыми и чрезвычайно масштабируемыми.
Дополнительные сведения об обновлении дублированных данных см. в статье Как записать денормализованные данные в Firebase.
Я бы также рекомендовал: