【问题标题】:Return all data back in new node in Firebase Cloud Functions在 Firebase Cloud Functions 的新节点中返回所有数据
【发布时间】:2017-09-18 21:38:23
【问题描述】:

这是我输入的数据:

这是我的功能:

exports.updateAll = functions.database.ref('/update/{uid}/{values}').onCreate(event => {
    const data = event.data.val()   
    console.log(data)
    return db.ref(`somewhereElse/somepath/`).update(data)
})

这是我收到的错误:

是否可以将所有创建的值更新回另一个路径?我认为使用 event.data.val() 创建一个 const 会起作用,但后来我得到了错误。

【问题讨论】:

    标签: javascript node.js firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    您对onCreate 触发器的引用是/update/{uid}/{values},因此事件数据将是values 的数据。例如,/update/{uid}/email 的事件数据将是一个字符串,这不是包含子对象的对象。

    如果您有理由需要以这种方式触发,则可以解决您遇到的错误。

    functions.database.ref('/update/{uid}/{values}').onCreate(event => {
    
        const key = event.params.values
        const value = event.data.val()
    
        console.log(key, value)
    
        return db.ref(`somewhereElse/somepath/{key}`).set(value)
    })
    

    可以从事件参数和数据中检索创建的键值。然后我们可以将键插入到其他地方的引用中,并设置值而不是更新它。

    【讨论】:

    • 感谢您的回复,但问题是在将值设置为另一个路径时的最后一行。这就是错误出现的地方。
    • 是的,我明白你的问题。您正在尝试更新而不是设置。更新需要一个带有子对象的对象,但您的触发事件数据是一个字符串。
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2021-07-10
    • 1970-01-01
    • 2018-03-24
    相关资源
    最近更新 更多