【问题标题】:Firebase multi-path update set a parent node to nullFirebase 多路径更新将父节点设置为 null
【发布时间】:2019-06-27 20:29:13
【问题描述】:

我正在尝试使用 firebase 实时数据库多路径更新。 但是尝试如下将父节点设置为 null 会导致错误。

const firebaseUpdate = {}
firebaseUpdate[`user/${uid}`] = null
db.ref().update(firebaseUpdate) 

错误:Reference.update 失败:第一个参数包含路径 /user/USER_ID 那是另一个路径 /user/USER_ID/creationTime 的祖先

我想知道是否有一种方法可以使用多路径更新来将具有多个子节点的父节点设置为空。 我假设我可以使用删除或设置功能,但我宁愿使用多路径更新。

【问题讨论】:

    标签: node.js firebase firebase-realtime-database


    【解决方案1】:

    错误消息表明您正尝试在一次操作中对数据库应用两个冲突的更新。正如消息所述,您的更新尝试:

    1. 写信给/user/USER_ID
    2. 写信给/user/USER_ID/creationTime

    第二个写的是第一个的子。由于未指定多位置的写入顺序,因此无法说写入操作的结果是什么。

    如果您想用creationTime 替换当前存在于/user/USER_ID 的任何数据,您应该像这样更新它:

    db.ref().update({
      "/user/USER_ID": { creationTime: Date.now() }
    }) 
    

    【讨论】:

    • 我只想将 /user/USER_ID 路径设置为空。谢谢 我只是想知道我是否能够使用多路径更新来做到这一点
    • 你是。但是错误消息表明您正在尝试执行两个冲突的写入,服务器检测到并拒绝。
    猜你喜欢
    • 2018-12-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    相关资源
    最近更新 更多