将 ember-data 与自定义序列化程序一起使用

Using ember-data with custom serializer

我有你可以说一个非标准 json api。我正在尝试将 ember-data 与它一起使用,因此根据我的阅读,我需要创建一个序列化程序。我试图在网上找到解释如何执行此操作的文章,但没有找到任何有用的信息。我尝试查看 ember 指南,但一无所获。这是我的 api:

的示例

数据收集:

{
  "data": [
    {
      "id": 14,
      "name": "company name",
      "slug": "company-name",
      "detail": {
        "data": {
          "id": 10,
          "address": "10000 sw 16th ct",
          "city": "Hollywood",
          "state": "Alabama"
        }
      },
      "employees": {
        "data": [
          {
            "id": 17,
            "first_name": "Peter",
            "last_name": "Griffin",
            "email": "company-name@Griffin.co"
          },
          {
            "id": 18,
            "first_name": "Robert",
            "last_name": "Gornitz",
            "email": null
          }
        ]
      }
    },
    {
      "id": 8,
      "name": "company name",
      "slug": "company-name",
      "detail": {
        "data": {
          "id": 8,
          "address": "1000 n university dr",
          "city": "Fort Lauderdale",
          "state": "West Virginia"
        }
      },
      "employees": {
        "data": [
          {
            "id": 15,
            "first_name": "Peter",
            "last_name": "Griffin"
          },
          {
            "id": 16,
            "first_name": "Peter",
            "last_name": "Griffin"
          }
        ]
      }
    }
  ]
}

这是一个项目及其关系:

{
  "data": {
    "id": 1,
    "name": "company name",
    "slug": "company-name",
    "detail": {
      "data": {
        "id": 1,
        "address": "1515 n university dr",
        "city": "Miami",
        "state": "Mississippi"
      }
    },
    "employees": {
      "data": [
        {
          "id": 1,
          "first_name": "Peter",
          "last_name": "Griffin",
          "email": "peter@email.com"
        },
        {
          "id": 2,
          "first_name": "Peter",
          "last_name": "Griffin",
          "email": "peter@email.com"
        }
      ]
    }
  }
}

是否有任何好的资源告诉我如何做到这一点?或者我不应该使用 ember-data?

我使用 Ember 数据的一些技巧。我相信你要么必须能够适应 api 要么写一个解串器:

1.根密钥 "data"

Ember 期望根键是模型的名称(例如 "company")。您可以通过创建应用程序序列化程序并通过从 'data' 键而不是模型 "typeKey".

中获取有效负载来覆盖 extractArray 和 extractSingle 方法来轻松处理这个问题

2。嵌入式记录

您可以使用 EmbeddedRecordsMixin。但是为此,您将不得不跳过嵌入记录中的根键 "data" 并直接包含它们(例如 "employees": [ { id: "2", ... }, ... ])

为此,我会查看 EmbeddedRecordsMixin: http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html#method_normalize

希望对您有所帮助。