对于本机应用程序中的用户组,推荐的体系结构是什么?

时间:2019-06-26 00:02:57

标签: firebase react-native nosql

在本机应用程序中,用户组的推荐体系结构是什么?我使用https://github.com/mcnamee/react-native-starter-kit创建了一个简单的应用,该应用使用了Firebase,并希望对其进行修改以适合我的需求,但不确定如何实现。

如果要选择的话,我希望允许用户成为许多组的一部分(类似于组消息传递,用户可以选择自己的朋友成为组的一部分)。因此,如果有三个用户user1,user2和user3,则可能是包含user1 / user2的group1和包含user2 / user3的group2。

在关系数据库设置中,我只能使用外键来表达这些关系,但是在NoSQL数据库(如firebase)中,结构似乎有很大不同。

有推荐的方法吗?是否有示例应用程序在某处实现了类似功能?

我对移动应用程序开发完全陌生,并且不想一开始就走错路,所以任何提示都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

我做了这样的事情。

firebase中将有一个users表,其中将包含所有用户数据。每个注册的用户都将添加到此处。

每个组将被添加到groups对象中,其成员数组将指向用户表中的用户ID

groups:{
0: {name:'Group1',members:[3,1,8], image:''},
1: {name:'Group1',members:[3,1,8], image:''},
}

users: {
    1: {name:'user1', avatar:''},
    2: {name:'user2', avatar:''},
}

您是正确的,在设计Firebase / fire-store时选择正确的数据库结构。我提供的示例只是您需要在您的项目中应用的伪代码。

我可以为使用Firebase的Github链接提供帮助。只需运行一次,就可以看到他们用来更好地实现事情的数据结构。

https://github.com/FirebaseExtended/firechat

https://github.com/chat-sdk/chat-sdk-android

https://github.com/AleBarreto/FirebaseAndroidChat

答案 1 :(得分:0)

您可以通过normalizing前端数据并使用normalized-reducer来管理关系数据库的设计。它是一个高阶归约器,它采用描述关系的模式,并返回根据关系写/读的归约器,操作和选择器。 Normalized-reducer可与React的useReducer和Redux一起使用,并且可以轻松地与Normalizr和Redux Toolkit集成。