change.after.val () возвращает полный объект JSON, а не значение объекта - PullRequest
0 голосов
/ 10 мая 2018

Я работаю над облачной функцией Firebase. Когда я регистрирую значение change.after.val (), я получаю распечатку пары ключ-значение

{ DCBPUTBPT5haNaMvMZRNEpOAWXf3: 'https://m.youtube.com/watch?v=t-7mQhSZRgM' }

, а не просто значение (URL). Вот мой код Что я не понимаю о .val ()? Разве «обновленный» не должен просто содержать URL?

exports.fanOutLink = functions.database.ref('/userLink').onWrite((change, context) => {

const updated = change.after.val();
console.log(updated);

return null

});

1 Ответ

0 голосов
/ 10 мая 2018

Если вам нужно только значение URL, вы должны включить подстановочный знак в путь триггера для ключа URL:

exports.fanOutLink = functions.database.ref('/userLink/{keyId}').onWrite((change, context) => {
  console.log('keyId=', context.params.keyId);

  const updated = change.after.val();
  console.log(updated);

  return null
});

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

Я указал выше, что вы можете изменить путь запуска, чтобы ссылаться на один уровень вниз. Альтернативой является доступ к дочерним элементам узла с помощью метода child () из DataSnapshot.

Не зная вашего варианта использования, трудно быть более точным в отношении пути события триггера, который вы должны использовать. Помните, что событие возникает, когда изменяется какой-либо элемент значения узла, будь то простое значение на корневом уровне или значение дочернего узла. Часто требуется, чтобы триггер был как можно более конкретным, чтобы лучше определить, что изменилось. Вот где подстановочные знаки в пути полезны. Как я показал в коде, который я разместил, строковое значение подстановочного знака доступно из параметра context.

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