【问题标题】:active model serializer flat structure主动模型序列化器扁平结构
【发布时间】:2015-10-11 13:49:47
【问题描述】:

我正在为我的 React/Redux 应用程序构建我的 api 服务器,我需要来自服务器的一些平坦响应来管理和减少我的状态。

例如,当我收到此响应时:

[{
  id: 1,
  title: 'Some Article',
  author: {
    id: 1,
    name: 'Dan'
  }
}, {
  id: 2,
  title: 'Other Article',
  author: {
    id: 1,
    name: 'Dan'
  }
}]

我怎样才能让它看起来像:

{
  result: [1, 2],
  entities: {
    articles: {
      1: {
        id: 1,
        title: 'Some Article',
        author: 1
      },
      2: {
        id: 2,
        title: 'Other Article',
        author: 1
      }
    },
    users: {
      1: {
        id: 1,
        name: 'Dan'
      }
    }
  }
}

最好的功能是每个键是文章/用户 ID,因此我可以轻松地从响应中获取它并将其合并到我的前端应用程序中。

【问题讨论】:

  • 为什么不使用JSONAPI?已有 AMS 适配器。
  • @max,因为它没有得到我平淡的回应;响应将比现在更嵌套。在我的 react/redux 应用程序中,我应该将响应中的一些数据与我已经拥有的一些状态合并,而不是标准化它很难做到。
  • 我假设您已经看过 Normalizr 库:github.com/gaearon/normalizr,它旨在完全解决这个问题 - 甚至看起来这就是您获得所需输出示例的地方
  • @Joshua,是的,我见过。但我希望我的 rails-app 以这样的格式向我发送回复。有人知道如何使用 AMS 或任何其他类型的序列化程序来做到这一点吗?

标签: ruby-on-rails api active-model-serializers rails-api flat


【解决方案1】:

您可以使用 AMS 来实现这一点,但您必须编写一个自定义适配器,因为没有一个库存适配器提供这种确切的格式。

JSON API(和相应的 AMS JsonApi 适配器)解决了这个问题,但格式与您想要的格式略有不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2017-04-17
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多