【问题标题】:What is the recommended architecture for user groups in a react-native app?react-native 应用程序中用户组的推荐架构是什么?
【发布时间】:2019-06-26 00:02:57
【问题描述】:

对于 react-native 应用中的用户组,推荐的架构是什么?我用https://github.com/mcnamee/react-native-starter-kit 创建了一个简单的应用程序,它使用firebase 并想修改它以满足我的需求,但我不确定如何实现这一点。

如果用户愿意,我希望允许他们加入多个群组(类似于群组消息,用户可以选择他们的朋友加入群组)。因此,如果有三个用户 user1、user2 和 user3,则可能存在包含 user1/user2 的 group1 和包含 user2/user3 的 group2。

在关系数据库设置中,我可以只使用外键来表达这些关系,但在 NoSQL 数据库中,比如 firebase,结构似乎大不相同。

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

我对移动应用程序开发完全陌生,不想从一开始就走错路,因此非常感谢任何提示。

【问题讨论】:

    标签: firebase react-native nosql


    【解决方案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

    【讨论】:

    • 如果用户被删除会怎样?那么您是否不必为每个用户维护一个“组”数组,以便您知道在删除之前从现有组中删除其成员资格的位置?在关系数据库中,删除可以级联。
    • 当一个用户被删除时,它也会从成员数组中被删除
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2023-03-06
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      相关资源
      最近更新 更多