Несколько обновлений в Firebase с использованием nodejs в качестве администратора - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть пользовательские коллекции в моем приложении, и теперь мы создаем черный список (Список заблокированных пользователей). и это новая коллекция

BlackListByUser
  |
  |
  -- userIdBlackListOwber
         |
         |
         -- userIdBlocked
               |
                - name: "Suad"
                - username: "supersuad"
                - photo: "http://firebase......"
                - status: "S5"

с помощью функций Firebase Я обнаруживаю пользовательские изменения в этих (Коллекция пользователей) элементах, и я должен обновить весь черный список независимо от того, у какого пользователя он есть в их списке.

exports.UpdateUserFromBlackList = functions.database.ref(`/User/{userId}`).onUpdate(event =>{
  ...
  db.ref(`BlackListByUser`).once('value').then(snapBlackList =>{
    snapBlackList.forEach(blackList =>{
       ...
       ...
       db.ref(`BlackListByUser/{blackList.key}/{userId}`).set(userInfo)
     })
  })
})

Я думаю, что мое решение не самое эффективное, учитывая, что мне нужно пройти через все элементы коллекции BlackListByUser (столько же черного списка, сколько пользователей)

-nodejs as admin- Как я могу обновить все элементы пользователя через все списки блокировки без итерации? как то так

db.ref(`BlackListByUser/{NO_MATTER_KEY}/{userId}`).set(userInfo)

ПРИМЕЧАНИЕ. Метод Update () устарел.

1 Ответ

0 голосов
/ 07 сентября 2018

Чтобы иметь возможность обновить узел, вам необходимо знать его полный путь. Поэтому, если вы еще этого не знаете, вам нужно прочитать или запросить базу данных, чтобы получить пути. Firebase не имеет эквивалента UPDATE BlackListByUser SET .... WHERE ....

Что может сэкономить вам пропускную способность, так это отдельный список только той информации, которая вам нужна для построения пути. Поэтому, если вам просто нужны идентификаторы UID, вы можете сохранить список только идентификаторов UID со значением true (поскольку база данных Firebase Realtime автоматически удалит ключи без значения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...