gpt4 book ai didi

ember.js - JSON API 响应和 ember 模型名称

转载 作者:行者123 更新时间:2023-12-02 19:40:26 25 4
gpt4 key购买 nike

关于与 Ember 模型名称匹配的 JSON API 响应键“类型”的简单问题。

如果我有一个模型,例如“models/photo.js”,并且我有一个类似“/photos”的路线,我的 JSON API 响应如下所示

{
data: [{
id: "298486374",
type: "photos",
attributes: {
name: "photo_name_1.png",
description: "A photo!"
}
},{
id: "298434523",
type: "photos",
attributes: {
name: "photo_name_2.png",
description: "Another photo!"
}
}]
}

我假设我的模型名称应该是单数,但会弹出此错误

Assertion Failed: You tried to push data with a type 'photos' but no model could be found with that name

这当然是因为我的模型名为“照片”

现在,在 JSON API 规范中有一条注释,内容为“此规范与变形规则无关,因此 type 的值可以是复数或单数。但是,在整个实现中应一致使用相同的值。”

所以,

tl;dr 模型名称和 JSON API 响应键“类型”都是单数的“Ember 方式”吗?或者只要它们匹配就没关系?

最佳答案

JSON API 序列化程序需要复数类型。 Payload example from guides.

由于 modelNameFromPayloadKey 函数将 key 单数化,因此它适用于单数类型:

// as is
modelNameFromPayloadKey: function(key) {
return singularize(normalizeModelName(key));
}

但是逆操作 payloadKeyFromModelName 会使模型名称复数,如果您在后端使用单数类型,则应该更改:

// as is
payloadKeyFromModelName: function(modelName) {
return pluralize(modelName);
}

重要的是,内部 Ember Data JSON API 格式与 JSONAPISerializer 使用的格式略有不同。 Store.push 需要单数类型,JSON API 序列化程序需要复数类型。

来自discussion :

“...ED 在内部使用驼峰命名属性和单数类型,无论您使用什么适配器/序列化器。

当您使用 JSON API 适配器/序列化器时,我们希望用户能够使用 jsonapi.org 上提供的示例并让它正常工作。大多数用户永远不必关心内部格式,因为序列化器会为他们处理工作。

这已记录在指南中,http://guides.emberjs.com/v2.0.0/models/pushing-records-into-the-store/...”

关于ember.js - JSON API 响应和 ember 模型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com