我正在尝试使用云功能来定期检查会议期限是否已过。但是我不知道如何访问返回的快照的值。这是我的代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.checkForMeetings = functions.https.onRequest((req, res) =>
{
var query = admin.database().ref("meetings").orderByChild("deadline");
query.once("value").then((snapshot) =>
{
var currentDate = new Date();
var currentTime = currentDate.getTime();
var seconds = (currentTime / 1000).toFixed(0);
var deletion = {};
var updates = {};
console.log(seconds);
snapshot.forEach((child) =>
{
console.log(child.value)
if (seconds > child.value)
{
//Rest of the code here
}
}
}
}
会议数据库节点如下所示
现在,当我尝试打印截止日期值时,控制台仅显示“未定义”,并且if语句不执行。
有什么解决方案?
最佳答案
Query#once()
方法回调返回DataSnapshot
,DataSnapshot#forEach()
迭代器也是如此,因此您需要使用val()
方法来获取值:
值
val()
返回任何类型
从DataSnapshot
中提取JavaScript值。
退货
any type
DataSnapshot的内容作为JavaScript值(对象,数组,字符串,数字,布尔值或null
)。
例如:
snapshot.forEach((child) =>
{
console.log(child.val())
if (seconds > child.val())
{
//Rest of the code here
}
}
关于javascript - 无法使用Cloud Functions访问Datasnapshot值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47072865/