首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使我的反应达到所要求的标准?

如何使我的反应达到所要求的标准?
EN

Stack Overflow用户
提问于 2019-08-15 15:28:42
回答 3查看 1.1K关注 0票数 2

因此,我有一个后端rails应用程序正在运行,它响应特定的请求,如下所示

{"id": 68,"name": "name","email": "email"}

但是在烬中,我得到了这个错误

代码语言:javascript
复制
Error: Assertion Failed: normalizeResponse must return a valid JSON API document:
* One or more of the following keys must be present: "data", "errors", "meta".
at Object.assert (index.js:163)
at normalizeResponseHelper (-private.js:7428)
at -private.js:13291
at Backburner._run (backburner.js:1010)
at Backburner._join (backburner.js:986)
at Backburner.join (backburner.js:757)
at -private.js:13287
at tryCatcher (rsvp.js:335)
at invokeCallback (rsvp.js:506)
at publish (rsvp.js:492)

我试着把所有的东西都封装在“数据”数组中,然后我得到了这个错误。

代码语言:javascript
复制
Error: Assertion Failed: normalizeResponse must return a valid JSON API document:
* Top level of a JSON API document must be an object
at Object.assert (index.js:163)
at normalizeResponseHelper (-private.js:7428)
at -private.js:13291
at Backburner._run (backburner.js:1010)
at Backburner._join (backburner.js:986)
at Backburner.join (backburner.js:757)
at -private.js:13287
at tryCatcher (rsvp.js:335)
at invokeCallback (rsvp.js:506)
at publish (rsvp.js:492)

我如何规范所有的一切,在哪里,后端还是前端?

update:我做了一个哈希响应= {:data=>@user},然后返回response.to_json,我得到了

代码语言:javascript
复制
Error: Assertion Failed: Encountered a resource object with an undefined type (resolved resource using (unknown))
at Object.assert (index.js:163)
at Class._normalizeResourceHelper (json-api.js:183)
at Class._normalizeDocumentHelper (json-api.js:133)
at Class._normalizeResponse (json-api.js:228)
at Class.normalizeSingleResponse (json.js:407)
at Class.normalizeSaveResponse (json.js:393)
at Class.normalizeCreateRecordResponse (json.js:351)
at Class.normalizeResponse (json.js:232)
at normalizeResponseHelper (-private.js:7421)
at -private.js:13291
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-15 22:15:21

ember-data的默认设置是使用JSON:API标准。但这并不是必需的,所以您有两个选择:

1)您可以修改服务器上的输出以满足该标准,有一些库可以帮助您这样做,但是我还没有走这条路线,所以我不了解当前的最新情况。

2)您可以告诉成员以不同的方式解析您的响应,您可以通过为您的应用程序定制adapter来做到这一点。

我们的API看起来很像您的API,在我的app/adapters/application.js文件中有:

代码语言:javascript
复制
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
});

记录在https://guides.emberjs.com/release/models/customizing-adapters/。这是一个完全支持的方式,以自定义成员,以满足您的需要和其他工具,如ember-cli-mirage也提供对这种较不结构化的REST适配器方法的支持。

票数 2
EN

Stack Overflow用户

发布于 2019-08-16 16:50:19

因此,我能够做到这一点的唯一方法是严格遵守JSON标准。

我改变了我的回应,使之与成员指南中指定的格式完全相同。

代码语言:javascript
复制
{
    "data": {
        "type": "user",
        "id": "123",
        "attributes": {
            "name": "Jeff",
            "email": "Jeff@abc.com"
        }
    }
}

还在寻找一种覆盖它的方法

票数 2
EN

Stack Overflow用户

发布于 2019-08-15 17:00:22

我不知道Ember,但是从您提供的错误消息来看,有两个约束被突出显示。

  • JSON的顶层必须是一个对象,并且
  • 该对象必须有以下键之一:“数据”、“错误”、“元”。

考虑到这些信息,我会尝试返回以下内容:

代码语言:javascript
复制
{"data": {"id": 68,"name": "name","email": "email"} }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57512091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档