Ember.js 从余烬数据返回承诺时出错

Ember.js 从余烬数据返回承诺时出错,ember.js,ember-data,ember-cli-mirage,Ember.js,Ember Data,Ember Cli Mirage,我正在开发我的第一个Ember应用程序,让它以我想要的方式显示路由,从model()返回一个静态JSON对象: 现在我正试图重构以使用余烬数据+幻影,这真是太糟糕了 这是我的index.js路线 export default Ember.Route.extend({ model() { return this.store.find('element', 1); }, 如果我像这样设置我的幻影config.js: this.get('/elements', f

我正在开发我的第一个Ember应用程序,让它以我想要的方式显示路由,从
model()
返回一个静态JSON对象:

现在我正试图重构以使用余烬数据+幻影,这真是太糟糕了

这是我的
index.js
路线

export default Ember.Route.extend({
    model() {
        return this.store.find('element', 1);
    },
如果我像这样设置我的幻影
config.js

  this.get('/elements', function() {
    return {
      elements: [
          {
            id: 1,
            name: 'First Element',
            divisions: [1, 2]
          }
      ]
    }
  });
  this.get('/elements/1', function() {
    return {
       id: 1,
       name: 'First Element',
       divisions: [1, 2]
    }
  });
然后我得到这个错误:

Your Ember app tried to GET '/elements/1', but there was no route defined to handle this request.
22:46:40.883 "Error while processing route: index" "Assertion Failed: normalizeResponse must return a valid JSON API document:
    * One or more of the following keys must be present: "data", "errors", "meta"." "EmberError@http://localhost:4200/assets/vendor.js:25582:15
如果我像这样设置我的幻影
config.js

  this.get('/elements', function() {
    return {
      elements: [
          {
            id: 1,
            name: 'First Element',
            divisions: [1, 2]
          }
      ]
    }
  });
  this.get('/elements/1', function() {
    return {
       id: 1,
       name: 'First Element',
       divisions: [1, 2]
    }
  });
然后我得到这个错误:

Your Ember app tried to GET '/elements/1', but there was no route defined to handle this request.
22:46:40.883 "Error while processing route: index" "Assertion Failed: normalizeResponse must return a valid JSON API document:
    * One or more of the following keys must be present: "data", "errors", "meta"." "EmberError@http://localhost:4200/assets/vendor.js:25582:15
编辑:

所以这并不是一个解决问题的方法,但它让我克服了这个问题。我放弃了Invoker,并根据本优秀教程再次开始创建一个实际的Rails服务器:


我可以用这种方式做我想做的任何事情,如果我想让它成为一个生产应用程序,我离它更近了。

所以问题是你实际上没有遵守规范。您可以通过阅读上的“幻影”页面来解决此问题


本质上,在调用
GET/foo/1
时,您需要在JSON响应的顶层返回一个对象。您还需要将
GET/foo
的“elements”属性更改为“data”,这样就可以了。现在还没有一种简单的、可重复使用的方法来完成这个“海市蜃楼”的开箱即用。对于这两个问题,目前最好的办法是使用本文中介绍的解决方案。

您的API响应对于ember数据似乎无效。你能用你的服务器发送的内容更新你的帖子吗?余烬数据希望数据的格式如下所述:您能显示您的路由器吗?你可能错过了一条路线这里发生的事情是,我有一个元素(现在),它包含许多分区,每个分区包含许多集合。当我处理静态JSON对象时,我在.hbs模板中使用了{{#each来列出每个分区,并在该分区中列出每个集合。因此,我的模板的模型是一个元素。是否使用自定义适配器或其他东西?还可以尝试删除
分区:[1,2]
从config.js查看是否消除了错误。因此,如果你看的话。幻影响应中的顶级属性需要是:“数据”、“错误”或“元”。第一步是将“元素”属性包装在“数据”属性中。这并没有解决我的问题,但这是合乎逻辑的第一步。