Firebase Cloud函数如何获取价值并对其进行更新

时间:2018-08-17 14:14:27

标签: android typescript firebase-realtime-database google-cloud-functions

我正在尝试从数据库中的某个位置获取一个值,然后向其添加1并将其重新设置,但是最新的错误是

TypeError: Cannot read property 'update' of undefined
at admin.database.ref.once.then (/user_code/lib/index.js:22:25)

不确定为什么要尝试将其读取为我认为是一种方法的属性?我的整个方法就是这个

admin.database().ref('users/' + senderId + '/contacts/' + recipientId)
.once('value').then((contactSnapshot) => {
    var mContact = contactSnapshot.val()
    let unread = mContact['unread']
    console.log('contact name is ' + mContact['user_name'] + ' unread count is ' + unread)
    unread++
    var contactReference = mContact.ref
    contactReference.update({'unread' : unread})
})

我的控制台日志可以很好地打印联系人姓名和未读计数,但我在Java脚本(实际上是类型脚本)上几乎没有用,我会在此感谢任何帮助

1 个答案:

答案 0 :(得分:1)

mContact = contactSnapshot.val()返回所查询数据库位置的原始javascript值。它不包含其他参考对象。除非您在该位置的数据库中有一个名为ref的键值,否则mContact将没有ref属性。

听起来您想改contactSnapshot.ref。或者只是记住您最初构建它时的引用:

const contactReference = admin.database().ref('users/' + senderId + '/contacts/' + recipientId)