Ember Super Rentals Tutorial 3.15 - Работа с данными - PullRequest
1 голос
/ 07 февраля 2020

Я следовал учебнику ember Super Rental 3.15, когда я приступил к работе с разделом данных, я обновил индексный файл маршрута с помощью хуков модели, страница перестала работать. Также я нахожу учебники ember неполными.

ошибка говорит о том, что свойство карты является неопределенным кодом в индексе маршрутов. js файл:

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

const COMMUNITY_CATEGORIES = [
  'Condo',
  'Townhouse',
  'Apartment'
];

export default class IndexRoute extends Route {
  async model() {
    let response = await fetch('/api/rentals.json');
    let { data } = await response.json();

    return data.map(model => {
      let { attributes } = model;
      let type;

      if (COMMUNITY_CATEGORIES.includes(attributes.category)) {
        type = 'Community';
      } else {
        type = 'Standalone';
      }

      return { type, ...attributes };
    });
  }
}

изображение, если сообщение об ошибке: enter image description here

1 Ответ

2 голосов
/ 07 февраля 2020

Ваша проблема в том, что fetch('/api/rentals.json'); не возвращает правильные данные. И поэтому, когда вы делаете let { data } = await response.json();, тогда data будет undefined, а вы не можете делать undefined.map.

Так что код, который вы разместили, - правильный . Проблема в другом. Вы можете проверить:

  • правильно ли вы добавили файл rentals.json? Если вы откроете http://localhost:4200/api/rentals.json вы видите данные? Итак, вы сделали это ?
  • Я вижу ошибку из mirage. В учебнике super-rentals не используется mirage. Я вижу это здесь (примечание: git репо автоматически создается из направляющих, поэтому оно всегда актуально). Так что это может быть вашей проблемой. В зависимости от того, как вы настроите mirage, он будет в основном воспроизводить все ваши ajax запросы. Это означает, что fetch(... больше не будет работать так, как ожидалось, mirage предполагает, что вы всегда хотите использовать проверенные данные, и вы неправильно настроили mirage. Вы можете попытаться удалить мираж из вашего package.json, перезапустить npm install, перезапустить ember server и попробовать снова.
...