将用户数据与 REST API 提供的数据相关联

Posted

技术标签:

【中文标题】将用户数据与 REST API 提供的数据相关联【英文标题】:Associating user data with the data provided by REST API 【发布时间】:2021-06-15 18:05:12 【问题描述】:

为了更好地了解 React,我制作了一个简单的清单应用程序,让您可以跟踪游戏中的进度并做一些相关的笔记。数据以 JSON 对象的形式保存在 firebase 实时数据库中。对于单个用户(我自己),应用程序按预期工作,但我不知道如何允许多人访问该站点并维护他们自己的清单。


  "items": [
    "id": 0,
    "task": "Task to follow",
    "note": "Strategize",
    "isCompleted": false
  , 
    "id": 1,
    "task": "Another task",
    "remark": "Wait for second playthrough",
    "isCompleted": true
  ]

代码 sn-p 表示带有模拟数据的清单 JSON 对象。假设我设法实现了用户身份验证,我如何将该登录用户与他们唯一的清单数据相关联,而不是每个用户共享相同的清单?对于添加的上下文,用户将只被允许更改“note”和“isCompleted”属性。最佳解决方案是将数据保存在 MongoDB 中,但我很想从您那里读到一些见解,这些见解将使我能够修改现有项目的部分内容,而不是重做整个事情。

【问题讨论】:

您使用的是firebase,您可以将数据的形状修改为> user id > rest of the data>。这样你就可以访问它 @ObedMarquezParlapiano 很好地解决了我的问题。太感谢了。这种修改不会导致数据重复吗?假设有 50 个清单对象,10 个用户加起来将有 500 个唯一对象。我是新手,所以我很想阅读您对此的见解。 正确回答。 【参考方案1】:

如果您要寻找的是每个登录用户都有自己的清单,您可以将商店的结构修改为如下所示:

 'user-id-string-from-logged-in-hash': 
    
      "items": [
        "id": 0,
        "task": "Task to follow",
        "note": "Strategize",
        "isCompleted": false
      , 
        "id": 1,
        "task": "Another task",
        "remark": "Wait for second playthrough",
        "isCompleted": true
      ]
     
    

这样您就可以将每个用户隔离并轻松访问。你最终会得到一个大数据库,但这完全没问题。使用 firebase,您正在寻找一个良好的结构和便利性,而不是优化大小,因为 firebase 非常快(它就像一个查找表)。s

如果您希望让多个用户共享和修改清单,您可以执行以下操作:


  "items": [
    "id": 0,
    "task": "Task to follow",
    "note": "Strategize",
    "isCompleted": false,
    "modifiedBy": ['hash-of-user':  < object with the type of modifications the user did or something >]
  , 
    "id": 1,
    "task": "Another task",
    "remark": "Wait for second playthrough",
    "isCompleted": true
    "modifiedBy": ['hash-of-user':  < object with the type of modifications the 
    user did or something >]
  ]

【讨论】:

以上是关于将用户数据与 REST API 提供的数据相关联的主要内容,如果未能解决你的问题,请参考以下文章

使用授权防止用户访问 REST API 中的不相关数据

基于Vue.js 与 WordPress Rest API 构建单页应用

如何将 Membership API 与自己的应用程序相关数据结合使用?

从docusign REST API收集与安全相关的事件吗?

Laravel 7 - 使用 REST API 而不是数据库

如何获取华为运动健康服务授权码并调用Rest API访问数据?