javascript - Firebase 函数 - 无法读取所有子值

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

<小时/>

我有一个 firebase 函数,如下所示

    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)
    }

它正在开发一个 Firebase 实时数据库,其节点如下:

data structure

每次根据图像中的结构插入新值时都会触发此函数。我遇到的问题是,当创建新节点时,将成功检索“sharedBenefits”的值,但不会成功检索快照的其他子值。日志的输出如此处的图像所示。

functions logs

我无法找出无法检索快照的这些子值的原因。

仅供引用,写入数据库的代码是用 Java for Android 编写的,如下所示:

public static void saveToDatabase(Boolean fb, Boolean tw, Boolean pin, String shareUrl, String shareType) {
    setShareImageFirebaseReference();
    String nodeID = dateTimeStampMilliSeconds();
    myRef.child(nodeID).child(shareType).setValue(shareUrl);
    myRef.child(nodeID).child(FACEBOOK).setValue(fb);
    myRef.child(nodeID).child(TWITTER).setValue(tw);
    myRef.child(nodeID).child(PINTEREST).setValue(pin);
    myRef.child(nodeID).child(MY_PHOTO).setValue(thisAppUser.getPhotoUrl());
}

最佳答案

我相信当您在 {userID}/mySharedImages/{postID} 节点上 shareUrlsetValue 时,您编写的云函数会被触发触发器是该节点的onCreate,并且当时没有设置其他值,这就是错误的原因。

您应该尝试扇出技术来同时上传所有值或一起更新整个对象而不是单个值。

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

关于javascript - Firebase 函数 - 无法读取所有子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48365811/

相关文章:

javascript - 将项目添加到道场树的顶部

javascript - 获取动态图像的边框颜色然后打印它

angular - 如何从 Javascript 在 Cloud Firestore 中创建集合?

javascript - Firebase onWrite 其他实例 event.params 未定义

ios - 使用从 Firebase 获取的数据填充 tableView

firebase - 找不到模块 '.../lib/providers/https

javascript - 开发两个独立的 Node 应用程序来提供 Web 服务和使用 Web 服务以在浏览器上呈现它是一个好主意吗?

javascript - PreloadJS未定义(Windows 8游戏编程)

typescript - 缺少类型 'string' 的索引签名

javascript - 如何从 Cloud Functions for Firebase 文件夹中读取证书文件