我有一系列的键导致我的社交网络的帖子对象像/ posts/id /(发布信息)
当我加载帖子时,我使用observeSingleEventOfType(.Value)方法加载/发布/ 0然后/ posts/1等.
我使用lazyTableView一次加载30并且速度很慢.有没有什么方法可以使用其中一种查询方法或其他方法使其更快,即使我必须重构我的JSON树中的数据.
我来自Parse重新实现我的应用程序,到目前为止,经验非常好.只有这一点我有点坚持.在此先感谢您的帮助!
编辑:
func loadNext(i: Int) {
// check if exhists
let ideaPostsRef = Firebase(url: "https://APPURL")
ideaPostsRef.childByAppendingPath(i.description).observeSingleEventOfType(.Value, withBlock: {
(snapshot) in
if i % 29 == 0 && i != 0 && !self.hitNull { return }
// false if nil
// true if not nil
if !(snapshot.value is NSNull) {
let postJSON = snapshot.value as! [String: AnyObject]
print("GOT VALID \(postJSON)")
let post = IdeaPost(message: postJSON["message"] as! String, byUser: postJSON["user"] as! String, withId: i.description)
post.upvotes …Run Code Online (Sandbox Code Playgroud) 鉴于firebase中的数据结构,我想运行一个查询来检索博客'efg'.我此时不知道用户ID.
{Users :
"1234567": {
name: 'Bob',
blogs: {
'abc':{..},
'zyx':{..}
}
},
"7654321": {
name: 'Frank',
blogs: {
'efg':{..},
'hij':{..}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Ionic/Angular 和 Firebase 构建实时消息传递工具。我使用 Firebase 身份验证来验证我的用户身份,并使用 Firebase DB 来存储消息和消息线程。
我的问题是,我应该使用什么安全规则才能使消息线程私有且可行,并且仅对参与给定消息线程的 2 个人来说是可写的。
我的数据库结构现在看起来像这样:
-chats
--Message_thread_ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
--Message_thread_ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
Run Code Online (Sandbox Code Playgroud)
我当前的 firebase 安全规则是:
{
"rules": {
".read": "auth != null",
".write": false,
"$messageThreadID": {
".write": "auth != null && !data.exists()",
".read": "auth != null"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但这样任何经过身份验证的用户都将能够读取任何用户之间的所有消息。这不是我想要的。我想让消息线程仅对任何给定线程中的两个用户保持私有。
我应该如何重组我的数据库以获得最佳解决方案?
PS:我有办法使用后端来做到这一点,或者为各自线程的两个用户中的每一个制作两个副本,但这些解决方案看起来确实很次等。
firebase firebase-security firebase-authentication firebase-realtime-database
我阅读了 Firebase 中的多对多关系问题,
这里描述了如何在 firebase(nosql 数据库)中创建或构建多对多关系,这很容易,
companyContractors
companyKey1
contractorKey1: true
contractorKey3: true
companyKey2
contractorKey2: true
contractorCompanies
contractorKey1
companyKey1: true,
companyKey2: true
contractorKey2
companyKey2: true
contractorKey3
companyKey1: true
Run Code Online (Sandbox Code Playgroud)
但是当我想获得所有承包商的特定公司时,我可以只使用一个请求吗?因为在这种情况下,我只得到 id 列表,在那里之后,使用 js 循环或 forEach,我做了多个请求。
通常在其他 API 上,我只使用
URL/contractor/:id/company or
URL/company/:id/contractors
Run Code Online (Sandbox Code Playgroud)
如何在firebase上做到这一点?
有一个使用angular2,angularfire2的例子会很酷,
谢谢
javascript nosql firebase firebase-realtime-database angularfire2
我是Firebase的新手,我正在努力使有关1-1和1-many的“关系”数据的最佳数据库模型设计成为现实。
我们正在使用Firestore数据库(而不是实时数据库)。
假设我们有Projects可以包含多个Users,并且User可以多个Projects
用户界面需要显示的列表Users中Project,显示的东西喜欢email,firstname,lastname和department。
存储关系的最佳方法是什么?
UserID 数组Project?Project文档中的ID映射?我已经阅读了推荐的上述方法,但这是否适用于实时数据库?Firestore支持Sub Collection,听起来更合适……
Users项目文档中的子集合?ProjectID 映射到UserID的单独集合?Reference数据类型?我在这里阅读了有关数据类型的https://firebase.google.com/docs/firestore/manage-data/data-typesReference,这听起来像我想要的,但是我找不到更多!如果它只是ID的映射或数组,那么您将如何检索有关用户的剩余数据?这是否必须坐在应用程序UI中?
如果它是用户文档的子集合,是否有任何方法可以维护数据完整性?如果用户更改了名称,那么UI / cloudFunction是否必须更新Sub集合中该用户名称的每个条目?
任何帮助/指针赞赏...
对于 Facebook 类型的社交网络应用程序,需要一个高性能的数据库结构,用于在 Firebase(Cloud Firestore) (NoSQL) 中存储数据。
要存储的数据:
- Userinfo (name, email etc)
- Friends
- Posts
- Comments on posts.
Run Code Online (Sandbox Code Playgroud)
我对以下两个关于查询性能的数据库结构感到困惑(如果数据库变得巨大)。
(参考:C_xxx 是收藏,D_xxx 是文档)
结构 1
C_AllData
- D_UserID-1
name: xxxx,
email: yyy,
friends: [UserID-3, UserID-4]
- C_Posts
- D_PostId-1
Text: hhh
Date: zzz
- C_Comments
- D_CommentId-1
UserID: 3
Text: kkk
- D_CommentId-2
UserID: 4
Text: kkk
- D_PostId-2
Text: hhh
Date: zzz
- C_Comments
- D_CommentId-3
UserID: 3
Text: kkk
- D_CommentId-4
UserID: 4
Text: kkk
- …Run Code Online (Sandbox Code Playgroud)