<小时/>
我有一个 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 实时数据库,其节点如下:
每次根据图像中的结构插入新值时都会触发此函数。我遇到的问题是,当创建新节点时,将成功检索“sharedBenefits”的值,但不会成功检索快照的其他子值。日志的输出如此处的图像所示。
我无法找出无法检索快照的这些子值的原因。
仅供引用,写入数据库的代码是用 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}
节点上 shareUrl
的 setValue
时,您编写的云函数会被触发触发器是该节点的onCreate
,并且当时没有设置其他值,这就是错误的原因。
您应该尝试扇出技术来同时上传所有值或一起更新整个对象而不是单个值。
有关扇出技术的更多信息 here
关于javascript - Firebase 函数 - 无法读取所有子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48365811/