从Cloud Functions for Firebase读取数据?

时间:2017-04-16 11:36:08

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

我正在使用此代码:

exports.lotteryTickets = functions.database.ref('/lottery/ticketsneedstobeprocessed/{randomID}').onWrite(event => {
    let ticketsBoughtByUser = event.data.val();

})

但是,TickBoughtByUser不正确。如何检索下图中显示的数字,以便在字符串旁边(oeb ...)?谢谢。

enter image description here

我收到此日志:enter image description here

2 个答案:

答案 0 :(得分:4)

在您的情况下,event.data.val()显然不会返回数字。它返回一个您在日志中看到的对象。如果console.log(ticketsBoughtByUser)(不使用字符串连接来构建消息),您实际上可以看到对象中的数据。

对于您在数据库中显示的数据,我希望val是一个包含这些数据的对象(编辑,因此我不必键入它):

{
    "oeb...IE2": 1
}

如果你想从该对象中获取1,你必须使用字符串键进入它,无论该字符串代表什么:

const num = ticketsBoughtByUser["oeb...IE2"]

如果您希望数字,而不是您最初提供的位置的对象,则需要两个通配符才能直接获取它:

exports.lotteryTickets = functions.database
        .ref('/lottery/ticketsneedstobeprocessed/{randomID}/{whatIsThis}')
        .onWrite(event => {
    const num = event.data.val()
}

我为whatIsThis添加了一个通配符,它​​将匹配我在上面编辑的字符串。

但我真的不知道你的功能想要完成什么,所以它只是猜测你是否真的应该这样做。

答案 1 :(得分:2)

你也可以获得如下所示的ticketsBoughtByUser值

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('/articles/{articleId}')
        .onWrite(event => {

        // Grab the current value of what was written to the Realtime Database.
        var eventSnapshot = event.data;

       //Here You can get value through key
        var str = eventSnapshot.child("author").val();

        console.log(str);

        });