Simple Ember Data Issue with Mirage (Error: Encountered a resource object with an undefined type )

Simple Ember Data Issue with Mirage (Error: Encountered a resource object with an undefined type )

我有一些使用 Ember.js 的经验,现在正在创建一个新项目,Mirage 暂时存根数据。

我正在逐步完成 Ember.js Tutorial,但在查询记录时一直出现此错误:

Encountered a resource object with an undefined type (resolved resource using DS.JSONAPISerializer)

我确实知道 已经被问到,但它不包括 Mirage 插件,而且我还研究了该问题中回答的所有技术。


mirage/config.js

export default function() {
  this.namespace = '/api'

  this.get('/todos', function() {
    return {
      data: [
        {
          text: 'Bring in garbage cans',
          completed: false,
          timesViewed: 3
        },
        {
          text: 'Look at the plants',
          completed: false,
          timesViewed: 0
        }
      ]
    }
  })
}

app/models/todo.js

import DS from 'ember-data';

export default DS.Model.extend({
    text: DS.attr(),
    completed: DS.attr(),
    timesViewed: DS.attr()
});

app/routes/index.js

import Route from '@ember/routing/route';

export default Route.extend({
    model() {
        return this.store.findAll('todo')
    }
});

app/adapters/application.js

import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
    namespace: 'api'
});

我一直在以各种方式格式化来自 Mirage 的响应,甚至在键上加上双引号,但这不是必需的,因为我相信 Mirage 会序列化它。

感谢任何有关我在这里遗漏的帮助。

我认为您遇到的问题是因为您的海市蜃楼数据未按照 JSON-API 规范进行格式化。

mirage/config.js =>

export default function() {
this.namespace = '/api'

this.get('/todos', function() {
  return {
    data: [
      {
          type: "todos",
          id: 1,
          attributes: {
          text: "Bring in garbage cans",
          completed: false,
          timesViewed: 3
          }
      },
      {
          type: "todos",
          id: 2,
          attributes: {
          text: "Look at the plants",
          completed: false,
          timesViewed: 0
          }
      }
      ]
  }
});

}

试试这段代码,看看问题是否得到解决。

如果您正在寻找一种根据 JSON-API 规范动态生成海市蜃楼数据的方法,请参阅此示例代码 -> sample code for dynamic mirage data!干杯