【问题标题】:Push to database and increment integer key推送到数据库并增加整数键
【发布时间】:2017-09-16 19:35:55
【问题描述】:

所以我使用 Firebase 实时数据库作为我的后端,但我遇到了一个问题,这可能有一个非常简单的解决方案..

我想将一些信息推送到数据库,但就目前而言,它不是推送一个 new 对象,而是简单地更新数据库..

这是我的做法:

   firebase.database().ref('users/' + uid + '/entries/'+$scope.todos.id+'/trackers/'+$scope.currTrack.id).update({
        note: individual.note,
        value: individual.value
    });

所以这很简单,但这就是数据库中正在发生的事情:

...
   -KuB-l8OX9zxGYuGw_EK //this is $scope.currTrack.id
      note: "the note",
      value: "the value"

所以不是创建一个新的递增整数键,而是将它放在 id 的正下方..

希望发生的是:

...
   -KuB-l8OX9zxGYuGw_EK //this is $scope.currTrack.id
      0 //incrementing integer key
         note: "the note",
         value: "the value"
      1
         note: "the 2nd note",
         value: "the 2nd value"

我做错了什么?我正在使用update,但set 的工作方式也一样..

有什么想法吗?谢谢!

【问题讨论】:

    标签: javascript angularjs oop firebase firebase-realtime-database


    【解决方案1】:

    我正在使用更新,但设置也一样..

    来自firebase.google.com Docs

    保存数据的方法

    设置将数据写入或替换到定义的路径,例如消息/用户/

    更新更新定义路径的一些键而不替换所有数据

    我认为你需要使用push API:

    push 添加到数据库中的数据列表。每次将新节点推送到列表时,您的数据库都会生成一个唯一键,例如消息/用户//

    【讨论】:

    • 我试过set.. 效果完全一样......它只是更新了变量,但不会使用整数键创建新项目
    • @JaneDoe 更新了答案,您是否尝试使用push
    • 这样的工作,它确实为每个创建一个新密钥,但它不是一个整数..它是一个随机生成的密钥..我想这很好
    • 只是好奇,你知道用整数键代替唯一键的方法吗?
    【解决方案2】:

    根据您的代码,每次执行 update() 时,数组都会打开

    'users/' + uid + '/entries/'+$scope.todos.id+'/trackers/'+$scope.currTrack.id

    用新值重置,即它首先清除 firebase 上的数据,然后在其中添加一个新条目。
    如果你想要你所说的,那么你可以通过

    来实现
    • 首先使用 once() 检索所有数组元素并将其保存到数组中,例如 list
    • 将您的项目推送到列表
    • 然后执行 update()

    但是这样就没有任何意义了。

    另一种方式

    维护一个count变量。

    var count = 0;
    
    ...update({
        [count++]: {
          note: individual.note,
          value: individual.value
        }
      });
    

    但建议您使用 post() 或按照link 所说的那样构建您的 firebase 数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多