Простая угасающая проблема данных с Mirage (ошибка: обнаружен объект ресурса с неопределенным типом) - PullRequest
0 голосов
/ 30 октября 2018

У меня есть некоторый опыт работы с Ember.js, и сейчас я работаю над созданием нового проекта с Mirage , чтобы заглушить данные.

Я пошагово изучаю Ember.js , но продолжаю получать эту ошибку при запросе записей:

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

Я понимаю, что подобный вопрос был задан, но он не включал аддон Миража, и я также прошел все приемы, на которые дан ответ в этом вопросе.


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 его сериализует.

Любая помощь в том, что мне здесь не хватает, приветствуется.

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, что проблема, с которой вы сталкиваетесь, связана с тем, что ваши данные о миражах не отформатированы в соответствии со спецификациями 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, посмотрите этот пример кода -> пример кода для динамических данных миража ! Ура 101

...