我尝试使用云功能定期检查会议截止日期是否已过。但我无法弄清楚如何访问我返回的快照的值。这是我的代码:
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
}
}
}
}
会议数据库节点如下所示
现在控制台只是打印' undefined'当我尝试打印截止期限值时,if语句不会执行。 解决方案是什么?
答案 0 :(得分:2)
Query#once()
方法回调返回DataSnapshot
,DataSnapshot#forEach()
迭代器也是如此,因此您需要使用val()
方法获取值:< / p>
VAL
val()
返回任何类型从
中提取JavaScript值DataSnapshot
。<强>返回强>
any type
DataSnapshot的内容为JavaScript值(对象,数组,字符串,数字,布尔值或null
)。
例如:
snapshot.forEach((child) =>
{
console.log(child.val())
if (seconds > child.val())
{
//Rest of the code here
}
}