1

我使用這個代碼:從Cloud Functions中爲Firebase讀取數據?

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

}) 

但ticketsBoughtByUser是不正確的。我如何檢索下圖中顯示的數字,以便在字符串旁邊(oeb ...)?謝謝。

enter image description here

我得到這個日誌:enter image description here

+0

你是如何看到它的喃?你現在在你的函數中只顯示一行代碼,所以不可能看到真正發生的事情。 –

+0

console.log(ticketsBoughtByUser),然後我去firebase功能,我看到日誌。這是整個功能。我只想得到「1」,或任何其他可能出現在那裏的整數......當然,控制檯日誌是在讓ticketBoughtByUser聲明之後。 –

+0

對不起,NaN出現在我嘗試這個時:Number(event.data.val();)。但是,我在我的問題中添加了以下日誌。 –

回答

3

在你的情況,event.data.val()顯然不會返回一個數字。它返回一個對象,你在日誌中看到。如果您使用console.log(ticketsBoughtByUser)(不要使用字符串連接來構建消息),您實際上可以看到對象中的數據。

對於在數據庫中顯示的數據,我希望瓦爾要包含此數據(我不必鍵入它刪節左右)對象:

{ 
    "oeb...IE2": 1 
} 

如果你想得到了1指出的對象,你必須使用字符串鍵,不管是字符串代表達成了進去:如果你想只是數量,而不是對象的位置您最初

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

給,你會n EED兩個通配符它獲得直接:

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

我添加了一個通配符whatIsThis,這將匹配該字符串我上面節錄。

但我真的不知道你的函數試圖完成什麼,所以這只是猜測你是否應該這樣做。

+0

感謝它工作:) –

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); 

     }); 
相關問題