我正在尝试使用云功能来定期检查会议期限是否已过。但是我不知道如何访问返回的快照的值。这是我的代码:

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
            }
        }
    }
}


会议数据库节点如下所示

javascript - 无法使用Cloud Functions访问Datasnapshot值-LMLPHP

现在,当我尝试打印截止日期值时,控制台仅显示“未定义”,并且if语句不执行。
有什么解决方案?

最佳答案

Query#once()方法回调返回DataSnapshotDataSnapshot#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/

10-10 10:21