Как получить отдельные значения JSON из базы данных Firebase?

Допустим, у меня есть узел firebase, который называется dbref = firebase.ref ('/ Transfer_Request / {pushID] /').

И клиент записывает два значения; from_ID и to_ID в dbref. Как мне получить отдельные значения from_ID и to_ID из функций Firebase Cloud?

Как получить отдельные значения JSON из базы данных Firebase?

Мой код:

exports.TransferTicket = functions.database.ref('/Transfer_Request/{pushID}').onWrite((event) => {

  const original = event.data.val();
  const from_ID = original.from_ID;
  const to_email_ID = original.to_ID;

  //search for to_email ID
  return admin.database().set("A transfer request was just made");

});

Я получаю две ошибки:

1)

TypeError: admin.database(...).set is not a function at exports.TransferTicket.functions.database.ref.onWrite (/user_code/index.js:41:25) at Object. (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27) at next (native) at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12) at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36) at /var/tmp/worker/worker.js:716:24 at process._tickDomainCallback (internal/process/next_tick.js:135:7)

2)

TypeError: Cannot read property 'from' of null at exports.TransferTicket.functions.database.ref.onWrite (/user_code/index.js:35:25) at Object. (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27) at next (native) at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12) at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36) at /var/tmp/worker/worker.js:716:24 at process._tickDomainCallback (internal/process/next_tick.js:135:7)

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
549
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первая проблема возникает из-за того, что при выполнении следующих действий вы упускаете Firebase Reference.

return admin.database().set("A transfer request was just made");

Ты должен сделать:

admin.database().ref('...the path where you want to write...').set("A transfer request was just made");

Дополнительные сведения см. В документации для Справка и База данных.

Вторая проблема связана с тем, что с момента выхода новой версии 1.0.0 Firebase SDK for Cloud Functions синтаксис изменился. См. Этот документ пункт.

Вы должны изменить свой код следующим образом:

exports.TransferTicket = functions.database.ref('/Transfer_Request/{pushID}').onWrite((change, context) => {

    const original = change.after.val();

    const from_ID = original.from_ID;
    console.info(from_ID);
    const to_email_ID = original.to_ID;
    console.info(to_email_ID);

    return admin.database().ref('...path...').set("A transfer request was just made")
    .catch(error => {
        console.info(error);
        //...
    });

});

Большое спасибо! Я ввожу значение в .ref ('/ Transfer_Request / {pushID] /') как {"from_ID": "[email protected]", "to_ID": "[email protected]"}. Теперь, как мне присвоить значения from_ID и to_ID различным переменным в моей программе? Потому что он говорит, что 'change.after.val ()' имеет значение null. Может быть, это потому, что записывается не одно значение, а объект json?

Arjun Ram 11.06.2018 09:41

Ваш объект javascript кажется правильным. Когда вы смотрите на базу данных из консоли Firebase; вы видите правильные значения для from_ID и to_ID?

Renaud Tarnec 11.06.2018 09:45

Можете ли вы добавить в свой пост отрывок из своей базы данных для узла Transfer_Request?

Renaud Tarnec 11.06.2018 09:52

Загрузил, как вы просили!

Arjun Ram 11.06.2018 10:10

Единственная странная мысль, которую я вижу, - это то, что на экране печати вы пропускаете двойную кавычку в конце [email protected] и [email protected]. В остальном должно работать. Я обновил свой ответ несколькими журналами консоли. Что вы видите в журнале функций? Я также обновляю код с помощью ловушки для метода set (), чтобы обрабатывать возможные отклонения обещаний.

Renaud Tarnec 11.06.2018 10:47

Позвольте нам продолжить обсуждение в чате.

Arjun Ram 11.06.2018 18:14

Другие вопросы по теме