![](/img/trans.png)
[英]Why do I get "Expected catch() or return"-error when trying to connect to firestore via cloud-function?
[英]Why do I get this Cloud Firestore Function error?
我在Cloud Firestore功能日志視圖中收到此錯誤。
我是JavaScript和Firestore的新手,可以在此使用一些建議
TypeError:event.data.previous.data不是exports.onVisitorPres上的函數...
exports.onVisitorPresenceWrite = functions.database
.ref("/VISITORS_PRESENCE/{uid1}/{uid2}").onWrite((event) => {
// Get the data written or deleted on the Realtime Database
var eventStatus = event.data.val();
const previousData = event.data.previous.data();
// If the onWrite event is a delete event then use previousData
if(eventStatus == null){
eventStatus = previousData;
}
});
我想做的是在刪除關鍵項和添加新項時在Firebase Realtime數據庫密鑰和Firestore函數觸發器上使用.onWrite((event)
。我想我可以檢查eventStatus == null
,即當數據被刪除時,我只使用了previousData(在被刪除之前?)
該event
變量是一個實例Event
,並因此呼吁event.data
將返回DeltaDocumentSnapshot
為公司的FireStore和DeltaSnapshot
為實時數據庫。
使用這些增量快照,您可以獲得前一個值和previous
一個值,這將返回另一個DeltaDocumentSnapshot
或DeltaSnapshot
其中包含觸發寫入事件之前的前一個狀態。
在您的示例中,您使用的是Firebase實時數據庫觸發器,這意味着event.data.previous
將返回一個DeltaSnapshot
,它不支持data()
,但支持val()
。
在這種情況下,就像使用var eventStatus = event.data.val();
,您需要在上previous
調用val()
:
const previousData = event.data.previous.val();
相反,如果您嘗試使用Firestore觸發器,則需要更改此設置:
functions.database.ref("[...]")
對此:
functions.firestore.document("[...]")
然后您可以使用event.data.previous.data()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.