我在Cloud Firestore Function日志视图中收到此错误 我是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实时数据库密钥和Firestore功能触发器上的.onWrite((event)
。
我以为我可以检查eventStatus == null
,那就是删除数据的时候我只是使用previousData(在删除它之前)?
答案 0 :(得分:4)
event
变量是Event
的一个实例,因此调用event.data
将为Firestore返回DeltaDocumentSnapshot
,为实时数据库返回DeltaSnapshot
。< / p>
使用这些增量快照,您可以使用previous
获取之前的值,这将返回另一个DeltaDocumentSnapshot
或DeltaSnapshot
,其中包含触发写入事件之前的先前状态。
在您的示例中,您使用的是Firebase实时数据库触发器,这意味着event.data.previous
将返回DeltaSnapshot
,但不支持data()
,而是支持val()
1}}。
在这种情况下,正如您使用var eventStatus = event.data.val();
所做的那样,您需要在val()
上致电previous
:
const previousData = event.data.previous.val();
如果您尝试使用Firestore触发器,则需要更改此设置:
functions.database.ref("[...]")
对此:
functions.firestore.document("[...]")
然后你可以使用event.data.previous.data()
。