0

I have an Ember route handler that looks like this:

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return Ember.RSVP.hash({
      account: this.store.findRecord('account', params.id),
      timeZones: this.store.query('time-zone', {}),
      users: this.store.query('user', { by_account_id: params.id })
    });
  }
});

I also have a template that does this:

 each timeZones as |timeZone|
    ' {{timeZone.name}} {{timeZone.identifier}} {{timeZone.offset}},

Even though I can tell the server is returning the right thing—149 time zones—my template just shows the last of these 149 time zones repeated 149 times.

What could be the cause of this issue?

Edit:

If it helps, here's the response from the server:

{"time_zones":[{"name":"American Samoa","identifier":"Pacific/Pago_Pago","offset":"-11:00"},{"name":"International Date Line West","identifier":"Pacific/Midway","offset":"-11:00"},{"name":"Midway Island","identifier":"Pacific/Midway","offset":"-11:00"},{"name":"Hawaii","identifier":"Pacific/Honolulu","offset":"-10:00"},{"name":"Alaska","identifier":"America/Juneau","offset":"-09:00"},{"name":"Pacific Time (US \u0026 Canada)","identifier":"America/Los_Angeles","offset":"-08:00"},{"name":"Tijuana","identifier":"America/Tijuana","offset":"-08:00"},{"name":"Arizona","identifier":"America/Phoenix","offset":"-07:00"},{"name":"Chihuahua","identifier":"America/Chihuahua","offset":"-07:00"},{"name":"Mazatlan","identifier":"America/Mazatlan","offset":"-07:00"},{"name":"Mountain Time (US \u0026 Canada)","identifier":"America/Denver","offset":"-07:00"},{"name":"Central America","identifier":"America/Guatemala","offset":"-06:00"},{"name":"Central Time (US \u0026 Canada)","identifier":"America/Chicago","offset":"-06:00"},{"name":"Guadalajara","identifier":"America/Mexico_City","offset":"-06:00"},{"name":"Mexico City","identifier":"America/Mexico_City","offset":"-06:00"},{"name":"Monterrey","identifier":"America/Monterrey","offset":"-06:00"},{"name":"Saskatchewan","identifier":"America/Regina","offset":"-06:00"},{"name":"Bogota","identifier":"America/Bogota","offset":"-05:00"},{"name":"Eastern Time (US \u0026 Canada)","identifier":"America/New_York","offset":"-05:00"},{"name":"Indiana (East)","identifier":"America/Indiana/Indianapolis","offset":"-05:00"},{"name":"Lima","identifier":"America/Lima","offset":"-05:00"},{"name":"Quito","identifier":"America/Lima","offset":"-05:00"},{"name":"Atlantic Time (Canada)","identifier":"America/Halifax","offset":"-04:00"},{"name":"Caracas","identifier":"America/Caracas","offset":"-04:00"},{"name":"Georgetown","identifier":"America/Guyana","offset":"-04:00"},{"name":"La Paz","identifier":"America/La_Paz","offset":"-04:00"},{"name":"Santiago","identifier":"America/Santiago","offset":"-04:00"},{"name":"Newfoundland","identifier":"America/St_Johns","offset":"-03:30"},{"name":"Brasilia","identifier":"America/Sao_Paulo","offset":"-03:00"},{"name":"Buenos Aires","identifier":"America/Argentina/Buenos_Aires","offset":"-03:00"},{"name":"Greenland","identifier":"America/Godthab","offset":"-03:00"},{"name":"Montevideo","identifier":"America/Montevideo","offset":"-03:00"},{"name":"Mid-Atlantic","identifier":"Atlantic/South_Georgia","offset":"-02:00"},{"name":"Azores","identifier":"Atlantic/Azores","offset":"-01:00"},{"name":"Cape Verde Is.","identifier":"Atlantic/Cape_Verde","offset":"-01:00"},{"name":"Casablanca","identifier":"Africa/Casablanca","offset":"+00:00"},{"name":"Dublin","identifier":"Europe/Dublin","offset":"+00:00"},{"name":"Edinburgh","identifier":"Europe/London","offset":"+00:00"},{"name":"Lisbon","identifier":"Europe/Lisbon","offset":"+00:00"},{"name":"London","identifier":"Europe/London","offset":"+00:00"},{"name":"Monrovia","identifier":"Africa/Monrovia","offset":"+00:00"},{"name":"UTC","identifier":"Etc/UTC","offset":"+00:00"},{"name":"Amsterdam","identifier":"Europe/Amsterdam","offset":"+01:00"},{"name":"Belgrade","identifier":"Europe/Belgrade","offset":"+01:00"},{"name":"Berlin","identifier":"Europe/Berlin","offset":"+01:00"},{"name":"Bern","identifier":"Europe/Berlin","offset":"+01:00"},{"name":"Bratislava","identifier":"Europe/Bratislava","offset":"+01:00"},{"name":"Brussels","identifier":"Europe/Brussels","offset":"+01:00"},{"name":"Budapest","identifier":"Europe/Budapest","offset":"+01:00"},{"name":"Copenhagen","identifier":"Europe/Copenhagen","offset":"+01:00"},{"name":"Ljubljana","identifier":"Europe/Ljubljana","offset":"+01:00"},{"name":"Madrid","identifier":"Europe/Madrid","offset":"+01:00"},{"name":"Paris","identifier":"Europe/Paris","offset":"+01:00"},{"name":"Prague","identifier":"Europe/Prague","offset":"+01:00"},{"name":"Rome","identifier":"Europe/Rome","offset":"+01:00"},{"name":"Sarajevo","identifier":"Europe/Sarajevo","offset":"+01:00"},{"name":"Skopje","identifier":"Europe/Skopje","offset":"+01:00"},{"name":"Stockholm","identifier":"Europe/Stockholm","offset":"+01:00"},{"name":"Vienna","identifier":"Europe/Vienna","offset":"+01:00"},{"name":"Warsaw","identifier":"Europe/Warsaw","offset":"+01:00"},{"name":"West Central Africa","identifier":"Africa/Algiers","offset":"+01:00"},{"name":"Zagreb","identifier":"Europe/Zagreb","offset":"+01:00"},{"name":"Athens","identifier":"Europe/Athens","offset":"+02:00"},{"name":"Bucharest","identifier":"Europe/Bucharest","offset":"+02:00"},{"name":"Cairo","identifier":"Africa/Cairo","offset":"+02:00"},{"name":"Harare","identifier":"Africa/Harare","offset":"+02:00"},{"name":"Helsinki","identifier":"Europe/Helsinki","offset":"+02:00"},{"name":"Istanbul","identifier":"Europe/Istanbul","offset":"+02:00"},{"name":"Jerusalem","identifier":"Asia/Jerusalem","offset":"+02:00"},{"name":"Kaliningrad","identifier":"Europe/Kaliningrad","offset":"+02:00"},{"name":"Kyiv","identifier":"Europe/Kiev","offset":"+02:00"},{"name":"Pretoria","identifier":"Africa/Johannesburg","offset":"+02:00"},{"name":"Riga","identifier":"Europe/Riga","offset":"+02:00"},{"name":"Sofia","identifier":"Europe/Sofia","offset":"+02:00"},{"name":"Tallinn","identifier":"Europe/Tallinn","offset":"+02:00"},{"name":"Vilnius","identifier":"Europe/Vilnius","offset":"+02:00"},{"name":"Baghdad","identifier":"Asia/Baghdad","offset":"+03:00"},{"name":"Kuwait","identifier":"Asia/Kuwait","offset":"+03:00"},{"name":"Minsk","identifier":"Europe/Minsk","offset":"+03:00"},{"name":"Moscow","identifier":"Europe/Moscow","offset":"+03:00"},{"name":"Nairobi","identifier":"Africa/Nairobi","offset":"+03:00"},{"name":"Riyadh","identifier":"Asia/Riyadh","offset":"+03:00"},{"name":"St. Petersburg","identifier":"Europe/Moscow","offset":"+03:00"},{"name":"Volgograd","identifier":"Europe/Volgograd","offset":"+03:00"},{"name":"Tehran","identifier":"Asia/Tehran","offset":"+03:30"},{"name":"Abu Dhabi","identifier":"Asia/Muscat","offset":"+04:00"},{"name":"Baku","identifier":"Asia/Baku","offset":"+04:00"},{"name":"Muscat","identifier":"Asia/Muscat","offset":"+04:00"},{"name":"Samara","identifier":"Europe/Samara","offset":"+04:00"},{"name":"Tbilisi","identifier":"Asia/Tbilisi","offset":"+04:00"},{"name":"Yerevan","identifier":"Asia/Yerevan","offset":"+04:00"},{"name":"Kabul","identifier":"Asia/Kabul","offset":"+04:30"},{"name":"Ekaterinburg","identifier":"Asia/Yekaterinburg","offset":"+05:00"},{"name":"Islamabad","identifier":"Asia/Karachi","offset":"+05:00"},{"name":"Karachi","identifier":"Asia/Karachi","offset":"+05:00"},{"name":"Tashkent","identifier":"Asia/Tashkent","offset":"+05:00"},{"name":"Chennai","identifier":"Asia/Kolkata","offset":"+05:30"},{"name":"Kolkata","identifier":"Asia/Kolkata","offset":"+05:30"},{"name":"Mumbai","identifier":"Asia/Kolkata","offset":"+05:30"},{"name":"New Delhi","identifier":"Asia/Kolkata","offset":"+05:30"},{"name":"Sri Jayawardenepura","identifier":"Asia/Colombo","offset":"+05:30"},{"name":"Kathmandu","identifier":"Asia/Kathmandu","offset":"+05:45"},{"name":"Almaty","identifier":"Asia/Almaty","offset":"+06:00"},{"name":"Astana","identifier":"Asia/Dhaka","offset":"+06:00"},{"name":"Dhaka","identifier":"Asia/Dhaka","offset":"+06:00"},{"name":"Novosibirsk","identifier":"Asia/Novosibirsk","offset":"+06:00"},{"name":"Urumqi","identifier":"Asia/Urumqi","offset":"+06:00"},{"name":"Rangoon","identifier":"Asia/Rangoon","offset":"+06:30"},{"name":"Bangkok","identifier":"Asia/Bangkok","offset":"+07:00"},{"name":"Hanoi","identifier":"Asia/Bangkok","offset":"+07:00"},{"name":"Jakarta","identifier":"Asia/Jakarta","offset":"+07:00"},{"name":"Krasnoyarsk","identifier":"Asia/Krasnoyarsk","offset":"+07:00"},{"name":"Beijing","identifier":"Asia/Shanghai","offset":"+08:00"},{"name":"Chongqing","identifier":"Asia/Chongqing","offset":"+08:00"},{"name":"Hong Kong","identifier":"Asia/Hong_Kong","offset":"+08:00"},{"name":"Irkutsk","identifier":"Asia/Irkutsk","offset":"+08:00"},{"name":"Kuala Lumpur","identifier":"Asia/Kuala_Lumpur","offset":"+08:00"},{"name":"Perth","identifier":"Australia/Perth","offset":"+08:00"},{"name":"Singapore","identifier":"Asia/Singapore","offset":"+08:00"},{"name":"Taipei","identifier":"Asia/Taipei","offset":"+08:00"},{"name":"Ulaanbaatar","identifier":"Asia/Ulaanbaatar","offset":"+08:00"},{"name":"Osaka","identifier":"Asia/Tokyo","offset":"+09:00"},{"name":"Sapporo","identifier":"Asia/Tokyo","offset":"+09:00"},{"name":"Seoul","identifier":"Asia/Seoul","offset":"+09:00"},{"name":"Tokyo","identifier":"Asia/Tokyo","offset":"+09:00"},{"name":"Yakutsk","identifier":"Asia/Yakutsk","offset":"+09:00"},{"name":"Adelaide","identifier":"Australia/Adelaide","offset":"+09:30"},{"name":"Darwin","identifier":"Australia/Darwin","offset":"+09:30"},{"name":"Brisbane","identifier":"Australia/Brisbane","offset":"+10:00"},{"name":"Canberra","identifier":"Australia/Melbourne","offset":"+10:00"},{"name":"Guam","identifier":"Pacific/Guam","offset":"+10:00"},{"name":"Hobart","identifier":"Australia/Hobart","offset":"+10:00"},{"name":"Melbourne","identifier":"Australia/Melbourne","offset":"+10:00"},{"name":"Port Moresby","identifier":"Pacific/Port_Moresby","offset":"+10:00"},{"name":"Sydney","identifier":"Australia/Sydney","offset":"+10:00"},{"name":"Vladivostok","identifier":"Asia/Vladivostok","offset":"+10:00"},{"name":"Magadan","identifier":"Asia/Magadan","offset":"+11:00"},{"name":"New Caledonia","identifier":"Pacific/Noumea","offset":"+11:00"},{"name":"Solomon Is.","identifier":"Pacific/Guadalcanal","offset":"+11:00"},{"name":"Srednekolymsk","identifier":"Asia/Srednekolymsk","offset":"+11:00"},{"name":"Auckland","identifier":"Pacific/Auckland","offset":"+12:00"},{"name":"Fiji","identifier":"Pacific/Fiji","offset":"+12:00"},{"name":"Kamchatka","identifier":"Asia/Kamchatka","offset":"+12:00"},{"name":"Marshall Is.","identifier":"Pacific/Majuro","offset":"+12:00"},{"name":"Wellington","identifier":"Pacific/Auckland","offset":"+12:00"},{"name":"Chatham Is.","identifier":"Pacific/Chatham","offset":"+12:45"},{"name":"Nuku'alofa","identifier":"Pacific/Tongatapu","offset":"+13:00"},{"name":"Samoa","identifier":"Pacific/Apia","offset":"+13:00"},{"name":"Tokelau Is.","identifier":"Pacific/Fakaofo","offset":"+13:00"}]}

If I do this.store.findAll('time-zone') instead of this.store.query('time-zone', {}), it shows the last time zone once instead of 149 times, but it still only shows the last time zone.

Here's my time-zone.js model also:

import DS from 'ember-data';
import Validation from 'titans-haze/mixins/validation';

export default DS.Model.extend(Validation, {
  name: DS.attr('string'),
  identifier: DS.attr('string'),
  offset: DS.attr('string')
});
Jason Swett
  • 43,526
  • 67
  • 220
  • 351

1 Answers1

0

I found the solution in this SO answer:

import ApplicationSerializer from 'titans-haze/serializers/application';

export default ApplicationSerializer.extend({
  primaryKey: 'identifier'
});

Since my time zone records don't have an id attribute, apparently Ember didn't consider them distinct. Telling Ember what the unique identifier is seems to have solved the problem.

Jason Swett
  • 43,526
  • 67
  • 220
  • 351