Firebase 云函数停止工作 - event.data 未定义

alo*_*loj 4 javascript node.js firebase firebase-realtime-database google-cloud-functions

我有一些云功能,但它们突然停止工作,现在我得到 event.data 未定义

exports.newMessageReceived = functions.database.ref('/messages/{pushId}')
 .onWrite((event) => {

    if (event.data.previous.exists() || !event.data.exists() ) {
        //Do nothing if data is edited or deleted
        console.log('Message edited or deleted - skip');
        return;
    }
   ...
}
Run Code Online (Sandbox Code Playgroud)

我得到

TypeError: Cannot read property 'previous' of undefined
Run Code Online (Sandbox Code Playgroud)

此处是这样定义的。firebase 云功能有什么变化吗?

Pet*_*dad 5

云功能已更新至 1.0 版,您可以在此处查看更多信息:

https://firebase.google.com/docs/functions/beta-v1-diff#realtime-database

关于这个问题,你需要把代码改成这样:

exports.newMessageReceived = functions.database.ref('/messages/{pushId}').onWrite((change,context) => {

if (change.before.exists() || !change.after.exists() ) {
    //Do nothing if data is edited or deleted
    console.log('Message edited or deleted - skip');
    return;
  }

}
Run Code Online (Sandbox Code Playgroud)

onWrite现在有两个参数changecontextChange具有beforeafter属性,before等价于previous

changebefore可以使用这里列出的方法:

https://firebase.google.com/docs/reference/admin/node/admin.database.DataSnapshot