将 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
希望对您有所帮助。
我有你可以说一个非标准 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
希望对您有所帮助。