加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Firebase / AngularFire中的数据建模最佳实践

发布时间:2020-12-17 17:53:20 所属栏目:安全 来源:网络整理
导读:我是第一次在Firebase中开发一个应用程序,并且很好奇我应该如何在两个对象(用户和帖子)之间建模数据.我来自更多的关系数据库背景,不仅好奇这是如何在非关系数据库中完成的,而且特别是如何在Firebase中设置两个对象之间的关系. 例如,我的应用程序有很多用户,
我是第一次在Firebase中开发一个应用程序,并且很好奇我应该如何在两个对象(用户和帖子)之间建模数据.我来自更多的关系数据库背景,不仅好奇这是如何在非关系数据库中完成的,而且特别是如何在Firebase中设置两个对象之间的关系.

例如,我的应用程序有很多用户,每个用户创建许多帖子.

User {
    firstName: String,lastname: String,userName: String
}

Post {
    title: String,content: String,date: Date,writtenBy: [User object?]
}

我应该如何在Firebase中构建这两个对象,以便帖子属于用户,但是无论用户如何都可以查询所有帖子,并且可以在不中断其他对象的数据和/或关系的情况下编辑用户和帖子对象?

我应该如何通过firebase创建新的“关系”对象:

sync.$set({userA: {
   firstname: "Billy",lastName: "Bob",userName: "BillyBob",Posts: {
       // .....
   }
}
});

谢谢!

解决方法

Firebase的构建充分考虑了性能.这就是你必须以不同方式设计数据结构的原因,在大多数情况下,规范化是你的敌人. Firebase中的每个对象都可以通过URL访问,您应该始终牢记这一点.
设计数据结构的方法仍然很多,这取决于您要执行哪些查询.如果其中一个查询能够显示所有消息(我相信一些最新消息将是最常见的用例),但同时您希望能够显示每个用户的消息而不是一个可能的消息数据结构可能如下所示:

User {
    userId(assigned by Firebase automatically) {
        firstName: String,userName: String
    }
}

Post {
    User {
        userId(matching userId in the User object) {
            postId(assigned by Firebase for every new post automatically) {
                title: String,writtenBy: String,userName or userId (this is not really needed,but may keep it for easier data access)
            }
        }
    }
}

然后,您可以更改任何用户数据,而不会触发帖子中的数据更改事件,例如您的示例中(如果您有大量邮件,这将非常繁重).
您可以独立于用户获取所有消息:

var postListRef = new Firebase(URL);
var lastPostQuery = postListRef.child("Post").limit(500);

你也可以使用startAt()和endAt()问题https://www.firebase.com/docs/web/api/query/limit.html
作为一个缺点 – 如果你只需要显示消息,你必须在for循环中解压缩每条消息,但我希望你也会显示用户信息,所以它应该没问题.

如果您只想收听一条用户消息,那么它非常简单快捷:

var postListRef = new Firebase(URL);
var lastPostQuery = postListRef.child("Post/User").child(userId);

Angular / AngularFire对这种数据结构有很大的支持.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读