我有一系列的键导致我的社交网络的帖子对象像/ 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) 我已经阅读了有关Stucturing Data的Firebase文档.数据存储很便宜,但用户的时间不是.我们应该优化get操作,并在多个地方写.
那么我可能会存储一个列表节点和一个列表索引节点,两者之间有一些重复的数据,至少是列表名称.
我正在使用ES6并在我的javascript应用程序中承诺处理异步流,主要是在第一次数据推送后从firebase获取ref密钥.
let addIndexPromise = new Promise( (resolve, reject) => {
let newRef = ref.child('list-index').push(newItem);
resolve( newRef.key()); // ignore reject() for brevity
});
addIndexPromise.then( key => {
ref.child('list').child(key).set(newItem);
});
Run Code Online (Sandbox Code Playgroud)
我知道我的应用程序只在客户端上运行,如何确保数据在所有地方保持同步?
为了进行健全性检查,我在我的承诺中设置了一个setTimeout,并在解决之前关闭了我的浏览器,实际上我的数据库不再一致,保存了一个没有相应列表的额外索引.
有什么建议?
对于 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)