Как получить родительский элемент элемента коллекции в событии триггера Firebase - PullRequest
0 голосов
/ 24 марта 2019

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

Моя структура базы данных выглядит следующим образом, chatSessions - это верхний уровень (я забыл включить его в скриншот), и здесь отображается запись chatSession:

Мой триггер вызывается со следующим:

exports.chatUpdate = functions.database.ref('/chatSessions/{sessionId}/messages/{messageId}').onCreate((event, context) => {
    event.ref.parent.once("value").then(snapshot => {
        const session = snapshot.val();
    }
}

Я пробовал, как указано выше, и сессия возвращается в виде списка сообщений, что имеет смысл, поэтому я попробовал следующее, но это не такне возвращает ничего для сеанса:

event.ref.parent.parent

По сути, я хочу перейти к описанному выше сеансу chatSession, чтобы получить идентификаторы двух пользователей в сеансе, чтобы я мог определить, кому отправлять уведомление в моем приложении.,Спасибо!

1 Ответ

1 голос
/ 24 марта 2019

Я не уверен на 100%, что правильно понял ваш вопрос, но если вы сделаете следующее, вы получите объект session, содержащий driverId и userId

exports.chatUpdate = functions.database
  .ref('/chatSessions/{sessionId}/messages/{messageId}')
  .onCreate((event, context) => {

    return event.ref.parent.parent.once('value').then(snapshot => {
      const session = snapshot.val();
      console.log(session);
      return null; 
      //here, instead of returning null, you may return the Promise returned by the notification sending asynchronous task
    });
  });

И, если вы хотите, кроме того, получить значение sessionId, просто используйте context.params.sessionId.

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