Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase和Angular JS中的随机ID_Javascript_Angularjs_Firebase - Fatal编程技术网

Javascript Firebase和Angular JS中的随机ID

Javascript Firebase和Angular JS中的随机ID,javascript,angularjs,firebase,Javascript,Angularjs,Firebase,我有一个函数,它可以创建一个客户端号码,并在firebase DB中包含一个秘密 vm.createNumbers = function ($scope, $vm, $window) { var clientNumbers = $firebaseObject(ref.child('clientNumbers')); var id = Math.floor( 100 * Math.random() ); clientNumbers.$load

我有一个函数,它可以创建一个客户端号码,并在firebase DB中包含一个秘密

    vm.createNumbers = function ($scope, $vm, $window) {
        var clientNumbers = $firebaseObject(ref.child('clientNumbers'));
        var id = Math.floor( 100 * Math.random() );
        clientNumbers.$loaded().then(function () {
            var newNumber = {
                id: {
                    number : vm.number,
                    secret : vm.secret,
                    assigned : false,
                }
            }

            clientNumbers.$ref().set(newNumber);
        })
    }
我正在尝试使用var
id
作为firebase DB的密钥持有者。现在,它将其存储为
id
,而不是像
098678
这样的内容,因此我的结构如下所示:

clientNumbers {
  id: {
     number: 20398973802387980,
     secret: 24987987,
     assigned: false
  }
}
您可以想象,当我创建另一个插入时,现有的插入会得到更新,而不是创建新的插入,因为“主id”与firebase中已经存在的id相同

最好是,我希望得到最后一个插入的“id”,并为下一次插入增加一个


我是从Codeigniter、PHP和MySQL开始讨论这个问题的,所以我有一个学习曲线。提前道歉。

来自Firebase文档

有关保存数据的方法

set()
将数据写入或替换到定义的路径,如消息/用户/用户名

push()
添加到数据库中的数据列表中。每次调用
push()

我使用的是
set()
方法,而这不是我想要实现的正确方法

我变了

clientNumbers.$ref().set(newNumber);


虽然这并不能解决我的“增量id”问题,但它目前仍然有效。也许我可以在每个数据集中解决这个问题。

当您处于大规模多用户环境中时,单调递增的ID(即0、1、2、3…)是一个糟糕的策略。所有用户必须就下一个id达成一致,这会造成同步瓶颈。这就是Firebase提供其
推送操作的原因。它具有与索引相同的排序保证,但没有同步问题。所以你应该想知道为什么你需要这些索引是单调的。很可能你并不真的需要它们。许多开发人员选择它们,只是因为它们很熟悉。
clientNumbers.$ref().push(newNumber);