我在 Cloud Firestore Function 中收到此错误日志 View 。
我是 JavaScript 和 Firestore 新手,需要一些建议
TypeError: event.data.previous.data is not a function at 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 实时数据库键和 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();
所做的那样,您需要对上一个
调用val()
:
const previousData = event.data.previous.val();
如果您尝试使用 Firestore 触发器,则需要更改此设置:
functions.database.ref("[...]")
对此:
functions.firestore.document("[...]")
然后您可以使用event.data.previous.data()
。
关于javascript - 为什么我会收到此 Cloud Firestore 功能错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47353981/