【问题标题】:Firebase Add Child Data without Overwrite in JavascriptFirebase添加子数据而不用Javascript覆盖
【发布时间】:2018-03-22 02:53:26
【问题描述】:

我已经搜索了许多有关如何解决此问题的答案,但我似乎仍然无法理解如何在 Firebase 中按照我想要的方式构建我的数据。根据有关构建数据的 Firebase 文档,我正在尝试将 ID 索引添加到我的用户下的节点,并将它们的值设置为 true。这是我想出的代码,但它只是不断覆盖用户“open_bounties”节点下的先前 ID。每次向数据库添加问题时,我都希望将问题 ID 添加到用户“open_bounties”节点,以便轻松索引用户打开的赏金。

Firebase flatten data structures docs

这是我将问题推送到数据库的代码。

    database.ref('issues/' + issueHashId).set({
      user_opened: userOpened,
      issue_url: getFullIssueUrlFromId(issueUrlId),
      bounty_amount_posted: bountyAmount,
      is_open: true
    })

    database.ref('open_issues/' + issueHashId).set({
      user_opened: userOpened,
      issue_url: getFullIssueUrlFromId(issueUrlId),
      bounty_amount_posted: bountyAmount
    })

    //This is the part in question
    var userOpenBountiesRef = database.ref('users/' + userOpened).child("open_bounties")
    userOpenBountiesRef.set({
      [issueHashId]: true
    })

这是结构的样子。如您所见,用户开放赏金中的唯一值是最近输入的记录 ID。

数据结构

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    试试这个:

    var userOpenBountiesRef = database.ref('users/' + userOpened).child("open_bounties");
    userOpenBountiesRef.child(issueHashId).set(true)
    

    【讨论】:

    • 您更新后的建议最终会创建一个设置为 true 的状态记录,我知道这可以工作,但我不需要它的数据。根据文档,我正在尝试仅列出在 open_bounties 参考下设置为 true 的开放赏金 ID。
    • 不起作用。 True 在那里无效,它是一个语法错误。
    • 嗯,应该是键值对。
    • 没有推送就没有办法追加内容吗?推动 lokos 做我想做的事,但我不想要自动生成的密钥。
    • 我用有效的答案编辑了您的答案。等待审核。你的回答让我明白了我需要去哪里。
    猜你喜欢
    • 2018-07-15
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2018-03-06
    • 2018-11-04
    • 2022-01-01
    相关资源
    最近更新 更多