Облачные функции Firebase не записываются в базу данных - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь написать функцию Firebase Cloud, которая будет записывать текущее время в базе данных при каждом вызове:

const admin = require('firebase-admin');
const functions = require('firebase-functions');

admin.initializeApp(functions.config().firebase);

exports.pushDateOfCall = functions.https.onRequest((req, res) => {

    const currentTime = new Date();

    return admin.database().ref('/dates').push({currentTime: currentTime}).then((snapshot) => {
        return res.send("Complete");
      }).catch((error) => res.send("Something went wrong"));
  });

После развертывания функции и вызова ее из URL-адреса функции внутри ничего не пишетсябаза данных.

Вывод журналов функций firebase:

Function execution took 1358 ms, finished with status code: 304

PS Я запускаю ссылку из инкогнито, так как я хочу, чтобы тот, кто вызывает ссылку (как авторизованную, так и неавторизованную), мог ее использовать.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019
const currentTime = new Date();

Здесь currentTime - это объект.Если вы хотите сохранить строку даты, используйте String(currentTime) как

return admin.database().ref('/dates').push({currentTime: String(currentTime)})
1 голос
/ 03 апреля 2019

@ hkchakladar прав, изменение на {currentTime: String(currentTime)} решит проблему.

Однако обратите внимание, что вам не нужно ни возвращать res.send(), ни возвращать обещание, возвращаемое асинхронным методом push(). Это показано в официальном видео Firebase о HTTP Cloud Function, см. https://www.youtube.com/watch?v=7IkUgCLr5oA

Таким образом, ваш код может быть следующим:

exports.pushDateOfCall = functions.https.onRequest((req, res) => {
  const currentTime = new Date();

  admin
    .database()
    .ref('dates')
    .push({ currentTime: String(currentTime) })
    .then(ref => {
      res.send('Complete');
    })
    .catch(error => res.status(500).send('Something went wrong'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...