gpt4 book ai didi

angularjs - 我应该总是通过 $push() 将新对象添加到对象列表中吗?

转载 作者:行者123 更新时间:2023-12-02 22:24:50 24 4
gpt4 key购买 nike

我正在为 Firebase 和 AngularFire 创建一个由用户、帖子和评论组成的数据结构。我的印象是用户的 key /ID 是用户名,评论和帖子的 key /ID 是自动生成的 Firebase key 。

我一直在研究 Angularfire 文档,并对使用 $push() 方法时添加到对象的自动生成的键 (name()) 感到困惑。

查看 Firebase 网站上的一些示例,我发现 Users 对象的示例没有自动生成的 key - 单个用户的 key 是用户名 - 但同时添加了一个 key 每当您通过 $push

将对象添加到数组时

我的问题是:

1) 我应该始终使用 firebase 自动生成的 key 吗?如果没有,那么我如何添加新用户,因为 $push() 自动创建 key ,并且 $set() 会重置我的所有用户?

2) $idname() 之间有什么关系?

示例数据

来自https://www.firebase.com/docs/web/guide/saving-data.html

文档显示以下Users对象:

{
"users": {
"alanisawesome": {
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing"
},
"gracehop": {
"date_of_birth": "December 9, 1906",
"full_name": "Grace Hopper"
}
}
}

如何在不使用 $set() 重置当前用户或使用 push() 添加 angularfire id 的情况下添加更多用户?

然后是具有生成的 id 的 Posts 对象:

{
"posts": {
"-JRHTHaIs-jNPLXOQivY": {
"author": "gracehop",
"title": "Announcing COBOL, a New Programming Language"
},
"-JRHTHaKuITFIhnj02kE": {
"author": "alanisawesome",
"title": "The Turing Machine"
}
}
}

非常感谢。

最佳答案

简短的回答:您可能不想使用 push 来存储您的用户。

如果您从其他来源获取 key ,例如 Simple Login 中的 uid ,您几乎肯定会希望使用 uid 在 Firebase 中组织您的用户及其数据。

这是因为,用户正在进行的 session 始终为您提供相同的 uid,您可以使用它来查找他们的用户数据及其内容。

如果您根据已知的用户 ID 进行设置,则在这种情况下您可以安全地使用 set,而无需重置所有用户。

但我认为你的意思是,那么一般来说,你什么时候设置和推送?

典型的博客在 Firebase 中可能如下所示:

{ 
'users' : {

// uid from Simple Login, that you used with set()
'google-1234' : {
'displayName' : 'Jane Smith',
...
}
, ...
},
'posts' : {

// a blog post ID you pick and use for set()
'blog-post-id-i-use-in-the-url' : {
'title' : 'Blog Post Title',
'contents' : 'Four score and seven...'
}, ...
}
'postComments' {
'blog-post-id-i-use-in-the-url' : {
// Firebase generated ID done with push()
'_fe31ca1' : {

// uid from simple login (assuming comments require auth)
'commenterUserId': 'google-5678',
'commentBody': 'cats back for everyone!'
} ... other comments ...
}
}
}

在此示例中,我们在插入新用户和帖子时使用 set,因为我们从其他来源获得了良好的唯一 ID。这些 ID 很好,因为它们允许我们稍后根据该 ID 轻松记忆内容。

不过,我们使用 push 来进行评论。我们没有从其他来源获得好的 ID,而且顺序很重要,因此我们让 Firebase 为我们生成一个 key 。这很有效,因为大多数时候我们都在处理与条目相关的注释,因此我们可以根据需要获取所有注释。

关于angularjs - 我应该总是通过 $push() 将新对象添加到对象列表中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com