无法使用云功能访问Datasnapshot值

时间:2017-11-02 10:23:51

标签: javascript firebase firebase-realtime-database google-cloud-functions

我尝试使用云功能定期检查会议截止日期是否已过。但我无法弄清楚如何访问我返回的快照的值。这是我的代码:

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

会议数据库节点如下所示

database example

现在控制台只是打印' undefined'当我尝试打印截止期限值时,if语句不会执行。 解决方案是什么?

1 个答案:

答案 0 :(得分:2)

Query#once()方法回调返回DataSnapshotDataSnapshot#forEach()迭代器也是如此,因此您需要使用val()方法获取值:< / p>

  

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