2016-10-19 1 views
0

Это мое первое структурирование данных в базе данных firebase.В Firebase, как обновить дочерний элемент всех узлов с предыдущего уровня?

Я понял, что должен оптимизировать операции чтения и денормализовать.

У меня есть список проектов и список пользователей. Кроме того, каждый пользователь имеет список связанных с ним проектов.

У меня нет проблем с чтением и отображением данных. Но, если Мне нужно отредактировать имя конкретного проекта, я не знаю, как это сделать правильно.

Имея ключ от этого проекта, я могу обновить с помощью projects/key/name, но мне также нужно обновить имя в проектах, связанных с каждым пользователем. Я пробовал использовать users/*/key, но ничего не произошло.

Я использую firebase с javascript в основном веб-приложении.

enter image description here

Первоначально я имел значение true для всех проектов в рамках users узла (вместо имени). При таком подходе мне просто нужно обновить узел projects, но мне нужно выполнить несколько операций чтения.

Заранее спасибо.

ответ

1

Вам понадобятся два индекса для этого:

  1. найти проекты для пользователя (у вас уже есть это)

  2. найти пользователей для проекта

Я бы сохранил два списка поиска в виде списков верхнего уровня:

users 
    $uid 
    admin: true 
projects 
    $projectid 
    name: "Name of project" 
    description: "Description of project" 
userProjects 
    $uid 
    $projectid: "Name of project" 
projectUsers 
    $projectid 
    $uid: true 

С помощью этой структуры вы можете найти все, что вам нужно, не требуя дорогого запроса.

Когда вы обновляете имя проекта, вы просто загружаете пользователей проекта, а затем перебираете его. Если вы чувствуете себя странно, вы даже можете использовать многопозиционный update(), чтобы обновить их все за один раз. Смотрите это сообщение в блоге для больше: https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html

 Смежные вопросы

  • Нет связанных вопросов^_^