Как удалить узел с облачной функцией? - PullRequest
1 голос
/ 14 апреля 2019

Это моя база данных Firebase:

project
|
|- Users
   |
   | - 00001
       |
       | - Likes
       |   |
       |   | - 00001
       |       |
       |       | - 'whatever':'whatever'
       |
       | - Unlikes
           |
           | - 00002
               |
               | - 'whatever':'whatever'

Мне нужна функция, запускаемая БД, которая, когда пользователь добавляет к Likes элемент с идентификатором 00002, автоматически удаляет его из Unlikes.

Я использую JavaScript, и у меня есть эта функция:

exports.likeItem = functions.database.ref('/Users/{userId}/Likes/{itemId}'.toString()).onCreate((like, context) => {
    return like.ref.parent.child('/Unlikes').once('value', (unlikes) => {
        unlikes.ref.child(context.params.itemId).set(null);
    });
});

Функция запускается правильно, когда написано подобное, но не удаляет противоположное.

Ошибка заключается в следующем:

'parent' of undefined at exports.likeItem.functions.database.ref.onCreate

1 Ответ

1 голос
/ 15 апреля 2019

Если я правильно понял, что вы пытаетесь достичь, следующее должно сработать.

exports.likeItem = functions.database
  .ref('/Users/{userId}/Likes/{itemId}')
  .onCreate((like, context) => {
    return like.ref.parent.parent
      .child('/Unlikes/' + context.params.itemId)
      .set(null);
  });

Обратите внимание, что вам не нужно ничего читать с помощью метода once(). Просто определите правильную ссылку для удаления (с помощью like.ref.parent.parent.child(....)) и установите для нее null.

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