Как сделать запрос к базе данных с помощью облачных функций Firebase - PullRequest
0 голосов
/ 05 декабря 2018

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

Вот соответствующая структура базы данных для справки: структура базы данных .Поле «показания» - это массив, а каждое «прочтение» - это карта, содержащая поля «дата» и «значение».

В настоящее время я нахожусь в точке, где я могу отправлять уведомления по электронной почте каждый раз, когдановый пользователь создан, однако я хочу, чтобы это работало для базы данных.Я не уверен, как запросить массив «чтения», а затем для каждого отдельного чтения.

Вот мой код, который отправляет электронное письмо при создании нового пользователя

exports.sendNotification = functions.auth.user().onCreate((user) => {


const mailOptions = {
    from: '"Spammy Corp." <noreply@firebase.com>',
    to:"fakeEmail@btopenworld.com",
    text: "TEST"
};

return mailTransport.sendMail(mailOptions)
    .then(() => console.log("It worked"))
    .catch((error) => 
console.error('There was an error while sending the email:', error)); 
});

1 Ответ

0 голосов
/ 05 декабря 2018

См .: https://firebase.google.com/docs/firestore/extend-with-functions

Например, чтобы запустить все новые показания, добавленные к первому потомку:

exports.sendEmail = functions.firestore
    .document('sensor/UGt.../readings')
    .onCreate((snap, context) => {
        const newValue = snap.data();
        const value = newValue.value;
        if (value < 10) {
            // send email
        }
    });

В дальнейших комментариях вы упомянули прослушивание новых чтений в все сенсорные элементы, а не только ваш первый.К сожалению, это невозможно сделать эффективным / простым способом ( source ).Вместо этого вам придется прослушивать все события onUpdate на /sensor/, проверить, добавляет ли обновление чтение, затем проверить значение и отправить свое электронное письмо.

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

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