Firebase事务
我的问题是: 用户可以创建一个新组,该组将具有增量ID 我想要一个增量ID而不是推送ID,因为我希望该ID可以在e.x之后使用。用户可以通过输入组id来搜索组。所以我使用transaction来进行搜索。我写了一些代码,效果很好,谢谢 当我自己测试时,我不确定碰撞发生时是否正确。请看一看Firebase事务,firebase,angularfire,Firebase,Angularfire,我的问题是: 用户可以创建一个新组,该组将具有增量ID 我想要一个增量ID而不是推送ID,因为我希望该ID可以在e.x之后使用。用户可以通过输入组id来搜索组。所以我使用transaction来进行搜索。我写了一些代码,效果很好,谢谢 当我自己测试时,我不确定碰撞发生时是否正确。请看一看 var setGroupNumber = function() { //increment the number by 1 return $firebase(groupRef.chi
var setGroupNumber = function() {
//increment the number by 1
return $firebase(groupRef.child('info').child('groupNumber'))
.$transaction(function(number) {
if (!number) return 1;
if (number < 0) return;
return number + 1
});
}
var create = function(user_id, photoStr, name) {
setGroupNumber().then(function(snapshot) {
if (!snapshot) {
console.log('transcation is aborted');
}
var group_id = snapshot.val() + 1000;
$firebase(groupRef.child('group').child(group_id))
.$set({
photoURL: photoStr,
group_id: group_id,
user_id: user_id,
name: name,
members: {},
created_time: Firebase.ServerValue.TIMESTAMP,
})
.then(function() {
$firebase(groupRef.child('group').child(group_id).child('members').child(user_id)).$set(true);
})
})
}
它现在为我做了工作,但我有两个问题
这是正确的方法吗。组id不会重复吗
在我的代码中,我在setGroupNumbers之后做了很多事情,比如更新用户的数据库等等。这里没有显示,这是否意味着其他想要创建组的用户将等待所有这些操作完成
感谢您的时间:让事务从1000开始返回值,而不是1,并在另一种方法中跳过向组id添加1000,这似乎更简单。交易是完成这项工作的正确方式。对于StackOverflow格式,这里有太多的非特定问题。一次只选一个问题来解决。请记住,这是问答,不是讨论形式。@加藤谢谢加藤,你解决了我想问的主要问题,我只在交易部分编辑了我的问题。因此,它可能对遇到交易问题的任何人都有用: