使用 push() 方法创建没有唯一键的新子位置
Posted
技术标签:
【中文标题】使用 push() 方法创建没有唯一键的新子位置【英文标题】:Using push() method to create new child location without unique key 【发布时间】:2018-08-09 18:20:08 【问题描述】:在我的 firebase 网络应用程序中,当新用户使用他们的电子邮件注册时,我会在根 ref 下的电子邮件地址下创建一个节点
但问题是使用 push() 方法将每个新用户添加到数据库中,每个用户都是使用如下所示的唯一键创建的
-用户
----ASFTU578FE
---------用户:user1@email.com
----FDWWE36S46
---------用户:user2@email.com
----WERSRTT23W
---------用户:user3@email.com
现在我如何访问用户的路径,因为我不知道将为每个新用户创建的唯一密钥
有没有办法在没有唯一键的情况下推送新用户,但我知道的键如 user.displayName 或 user.email
【问题讨论】:
【参考方案1】:调用push
会生成一个带有自动计算密钥的位置。
要在您自己确定密钥的路径上写一个孩子,您只需调用child("key").set(value)
。
如果您将 Firebase 身份验证用户存储在数据库中,惯用的方法是将它们存储在他们的 uid 下。
var user = firebase.auth().currentUser;
var usersRef = firebase.database().ref("users");
if (user)
usersRef.child(user.uid).set(
displayName: displayName,
email: email,
photoUrl: photoUrl,
emailVerified: emailVerified
);
【讨论】:
这是正确的答案。 @Vamsi Krishna 认为用户将来可能会更改他们的电子邮件地址。对于此类用例,uid 保持稳定。 我多次浏览文档,仅提到如何引用孩子而不是装箱,非常感谢您,另一个问题是如果我用 user.email 添加孩子,它不能正常工作,但可以使用 user.uid,,,不知道为什么,,,,再次非常感谢你 树中的节点在您写入值时创建,在您删除值时删除。所以没有办法显式创建或删除节点。 @rkrish 这是因为在 Hashmap以上是关于使用 push() 方法创建没有唯一键的新子位置的主要内容,如果未能解决你的问题,请参考以下文章
angularjs如何使用.push克隆具有相同位置的图像?
Django ORM - 我可以使用 ID 以外的其他列创建具有外键的新对象吗?