【问题标题】:Firing multiple api calls at once一次触发多个 api 调用
【发布时间】:2020-10-05 13:07:30
【问题描述】:

我正在努力寻找合适的词来表达我在研究中寻找的内容,所以我想我会问 stackoverflow 社区。我正在寻找一次在不同表中创建记录的最佳做法。

例如,用户注册。假设您需要在该用户注册时为他们创建 6 条记录,这些记录需要连接。通过连接,我的意思是,如果用户和团队是在用户注册时创建的,userID 将需要包含在团队的成员数组中。因此,需要按顺序触发记录,以便正确记录关系。所以需要先创建用户,然后是团队记录,这样我就可以将userID 添加到团队成员中。另请注意,稍后(在创建团队记录之后)需要使用用户团队下的teamID 更新用户记录。

所以你可以看到它有点到处都是。目前,我在用户提交时触发了多个 API 调用。虽然我使用 redux、firebase 和 react 进行这项工作——但我预见到很多潜在的错误会发生,并且感觉好像我没有以最有效的方式来做这件事。我想正确地做到这一点并乐于进行研究,我只是不确定我在寻找什么。我希望有一些指南、信息、搜索词等——基本上任何可以帮助我更彻底地理解这个概念的东西。

【问题讨论】:

  • 也许让后端服务器而不是前端来处理这个流程会更好

标签: reactjs database api redux


【解决方案1】:

这是 GraphQL 的完美候选者和正确处理它的后端。以KeystoneJS 为例。你可以做一个单一的创建用户并通过钩子系统在内部处理它。您还可以在一个突变中进行嵌套创建/连接所有操作,如果有嵌套操作,KeystoneJS 将为您处理所有这些。例如,您可以创建对象 A,然后在一个突变中创建对象 B。它会创建 B,然后是 A,然后将 A 连接到 B...,您无需进行额外的工作。我只是将其作为您可以使用的工具的一个示例。这是 Keystone 刚刚处理的一个示例突变:

mutation CreateUser {
  createUser(data: {
    username: "test"
    organization: {create: {
      title: "test"
    }}
  })
}

通知组织是在用户变异内部创建的。

是的,我认为最好的做法是让您的后端,不管它是什么,都可以完成工作。如果遇到问题并自行清理,它将失败。否则,它会产生积极的反应。我希望这会有所帮助......

对于替代方案,因为这是一个非常开放的问题...我还创建了一个 nestJS 后端。这也很有效,但是由于内置解决方案较少,它的固执己见要少得多,因此您需要做更多的工作(但它更灵活)。任何 CMS 都应该让您对此进行控制(Strapi 似乎正在起飞......我只是遇到了太多错误)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2020-11-23
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多