我想使用自动增量ID向firebase数据库添加一个新用户,如下面的屏幕截图所示:
我试过了:
var rootRef = firebase.database().ref();
var storesRef = rootRef.child("/users");
storesRef.set({
"name": "user1",
"pageId": "user1"
});
答案 0 :(得分:1)
我不推荐这个,但您可以尝试以下方法:
storesRef.limitToLast(1).once('value', (snapshot) => {
const nextID = parseInt(snapshot.key) + 1;
let updates = {};
updates['/users/' + nextID] = // your user;
rootRef.update(updates);
});
但是,我强烈建议您使用Firebases自动生成的ID,因为这种方法非常容易出错。
您还应该查看this answer.
答案 1 :(得分:0)
我花了很长时间试图为自己的项目解决这个问题,而且像往常一样,结果看起来很容易:
var newUserIndex;
storesRef.on('value', snap =>{
newUserIndex = snap.val().length;
});
database.ref('users/' + newUserIndex).set({name:'user1', pageId:'user1'});
因为数据库是从零开始的,所以snap.val()。length总是提供所需的下一个索引。我认为使用snap可能会对此造成过度杀伤并浪费资源(我刚刚开始使用Firebase,所以仍然可以掌握它) - 但是在控制台中检查使用情况统计数据,显然不是。
并非所有人都在构建具有多个用户且需要可扩展性的应用。我理解使用push()使用自动生成的密钥的好处,但对于较小的项目和单个用户项目,它并不总是正确的解决方案。