所以我使用Firebase实时数据库作为我的后端,我有一个问题,这可能有一个非常简单的解决方案。
我想将一些信息推送到数据库中,但就目前情况而言,它并不是推送一个新对象,而是简单地更新数据库。
我就是这样做的:
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
的工作原理也一样。
有什么想法吗?谢谢!
发布于 2017-09-16 19:39:43
我在使用update,但set的工作原理也是一样的。
保存数据的方法 设置将数据写入或替换到定义的路径,如消息/用户/ 更新更新定义路径的一些键,而不替换所有数据
我认为您需要使用push
API:
push添加到数据库中的数据列表中。每次将一个新节点推到列表上时,数据库都会生成一个唯一的密钥,比如messages/user//
发布于 2017-09-16 21:10:03
根据您的代码,每次更新()时,数组都会打开
“用户/”+ uid + '/entries/'+$scope.todos.id+'/trackers/'+$scope.currTrack.id
是用新的值重置的,也就是说,它首先清除火基上的数据,然后添加一个新条目。
如果你想要你说的话,那么你可以通过
但这样做没有任何意义。
另一种方式
维护一个计数变量。
var count = 0;
...update({
[count++]: {
note: individual.note,
value: individual.value
}
});
但是建议您使用post(),或者按照链接的说法构造您的防火墙数据库。
https://stackoverflow.com/questions/46257754
复制相似问题