Javascript Firebase和Angular JS中的随机ID
我有一个函数,它可以创建一个客户端号码,并在firebase DB中包含一个秘密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
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);
})
}
我正在尝试使用varid
作为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);