在firebase中获取错误对象可能为null



我是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);
});

});

正如您在文档中看到的,"如果位置(连接侦听器的位置(没有数据,它将用空的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云功能的第一个视频。

相关内容

  • 没有找到相关文章

最新更新