Firebase功能 - 无法读取所有子值

时间:2018-01-21 10:27:50

标签: javascript firebase-realtime-database google-cloud-functions

我有一个firebase功能,如下所示

Windows: ctrl + F5
Mac/Apple: Apple + R or command + R
Linux: F5

它正在使用firebase实时数据库,该数据库具有以下节点:

data structure

每次根据图像中的结构插入新值时,此函数都会触发。我遇到的问题是,当创建一个新节点时,正在成功检索'sharedBenefits'的值,而不是快照的其他子值。日志的输出按照此处的图像输出。

functions logs

我无法弄清楚为什么我无法检索快照的这些Child值。非常感谢任何帮助。

仅供参考,编写到数据库的代码在Java for Android中,如下所示:

    exports.shareNotifyNCoin = functions.database.ref('{userID}/mySharedImages/{postID}')
.onCreate(event => {
  const userID = event.params.userID
  const postID = event.params.postID
  const createdAt = postID.slice(0,15)
  const sharedBenefits = event.data.child('sharedBenefits').val()
  const sharedOnFaceBook = event.data.child('facebook').val() 
  const sharedOnTwitter = event.data.child('twitter').val()
  const sharedOnPinterest = event.data.child('pinterest').val()
  const createdByPic = event.data.child('myPhotoUrl').val()
console.log('myPhotoUrl is :' + createdByPic)
  console.log('sharedBenefits is : ' + sharedBenefits)
  console.log('facebook is:' + sharedOnFaceBook)
  console.log('twitter is: ' + sharedOnTwitter)
  console.log('pinterest is: ' + sharedOnPinterest)
    }

1 个答案:

答案 0 :(得分:1)

我相信当您在setValue节点shareUrl {userID}/mySharedImages/{postID}作为该节点的onCreate触发器时,您所编写的云功能会被触发,此时没有其他值设置,这就是为什么错误。

您应该尝试使用扇出技术同时上传所有值或将整个对象更新为单个值。

有关扇出技术的更多信息here