如何在Firebase中使用指定键替代默认键调用push()方法
解决Firebase存储用户数据时指定自定义键的问题
我懂你的需求啦——你现在用push()方法会让Firebase自动生成随机唯一ID作为节点键,但你想要用自己指定的键(比如用户的UID)来存储每个Manager的数据,对吧?
问题根源
原来的push()方法是Firebase用来生成唯一子节点的默认方式,它会自动创建带随机ID的节点,适合无自定义键需求的列表型数据,但显然不符合你想要用指定键存储用户信息的需求。
修改后的代码实现
你可以通过child()方法直接指定要存储的节点键,再用set()来写入数据。这里推荐用用户的uid作为键,因为UID是Firebase认证系统生成的唯一标识,不会重复,非常适合作为用户数据的节点键:
var manRef = firebase.database().ref('Managers'); function saveManage(sEmail, uid, society){ // 直接指定uid为节点键,定位到该路径 manRef.child(uid).set({ ManagerID : uid, Email : sEmail, Society : society }); }
额外说明
- 如果后续需要更新用户的部分信息(比如只修改
Society字段),可以用update()方法代替set(),这样不会覆盖节点上的其他现有数据:// 仅更新用户的Society字段 manRef.child(uid).update({ Society: "新的群组名称" }); - 如果你想使用其他字段作为键(比如邮箱),需要注意Firebase的节点键不能包含
./#$[]这些特殊字符,所以邮箱里的@和.需要先做转义处理,相比之下用UID作为键会更省心。
内容的提问来源于stack exchange,提问作者shaddles
相关产品推荐
相关产品推荐

