получение объекта ошибки, возможно, имеет значение null в firebase - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в firebase, когда я запускаю свою функцию, я получаю сообщение об ошибке:

Object is possibly 'null'.

       console.log(snapshot.val());

может кто-нибудь, пожалуйста, посмотрите мой код и помогите мне решить эту проблему,

здесь это мой код

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';


let serviceAccount = require("../src/serviceAccountKey.json");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://******.com"
});

let db = admin.database();



exports.helloWorld = functions.https.onRequest((req, res) => {
    res.send("Hello from Firebase!");
});

exports.groups_list = functions.https.onRequest((req, res) => {
    /*let data = {};
    data['status'] =  '1';
    data['groups'] = ["Montreal","Outremont","Saint-Eustache","Sherbrooke"];
    res.send(data);*/
    let groups = db.ref('groups');
    groups.on('value', function(snapshot) {
        const data =  snapshot.val();
        console.log(data);
    });


});

1 Ответ

0 голосов
/ 08 мая 2020

Как вы увидите в do c, «если местоположение (к которому вы прикрепляете прослушиватель) не имеет данных, оно будет запущено с пустым DataSnapshot ( val () вернет null ) ".

Таким образом, вам нужно проверить в своем коде, является ли snapshot.val() null или нет.


Однако обратите внимание, что использование on() в облачных функциях не рекомендуется, поскольку облачная функция имеет конечный срок службы.

Следует использовать метод once(), который «прослушивает ровно одно событие указанного типа, а затем прекращает прослушивание».

exports.groups_list = functions.https.onRequest((req, res) => {
    const groups = db.ref('groups');
    groups.once('value')
    .then(snapshot => {
       if (snapshot.val()) {
           console.log(snapshot.val());
           res.send(snapshot.val()) //For example
       } else {
           res.status(204).send('No content'));
       }
    })
    .catch(error => res.status(500).send('....'));

});

Возможно, вам будет интересно посмотреть официальную серию видеороликов , в частности первое видео о функциях HTTPS Cloud.

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