Error handling route error in ember.js with ember-data

I am trying to create an application using ember.js and ember-data using the following versions:

DEBUG: Ember : 1.7.0 DEBUG: Ember Data : 1.0.0-beta.9 DEBUG: Handlebars : 1.2.1 DEBUG: jQuery : 2.1.0 

I am using RESTAdapter to connect to the api that I wrote using node.js.

As soon as I download the application, I get the following error:

 Error while processing route: students undefined is not a function TypeError: undefined is not a function at http://localhost:9000/scripts/vendor/ember-data.js:12006:34 at tryCatch (http://localhost:9000/scripts/vendor/ember.js:45818:16) at invokeCallback (http://localhost:9000/scripts/vendor/ember.js:45830:17) at publish (http://localhost:9000/scripts/vendor/ember.js:45801:11) at http://localhost:9000/scripts/vendor/ember.js:29069:9 at DeferredActionQueues.invoke (http://localhost:9000/scripts/vendor/ember.js:634:18) at Object.DeferredActionQueues.flush (http://localhost:9000/scripts/vendor/ember.js:684:15) at Object.Backburner.end (http://localhost:9000/scripts/vendor/ember.js:147:27) at Object.Backburner.run (http://localhost:9000/scripts/vendor/ember.js:202:20) at apply (http://localhost:9000/scripts/vendor/ember.js:18382:27) 

Here's the code I'm using (loaded in the same order as I pasted it):

app.js

 var App = window.App = Ember.Application.create({ LOG_ACTIVE_GENERATION: true, LOG_TRANSITIONS: true, LOG_TRANSITIONS_INTERNAL: false, LOG_VIEW_LOOKUPS: true }); 

store.js

 App.ApplicationAdapter = DS.RESTAdapter.extend({ host: 'http://localhost:3000', serializer: DS.RESTSerializer.extend({ primaryKey: function(type) { return '_id'; }, serializeId: function(id) { return id.toString(); } }) }); 

models /student.js

 App.Student = DS.Model.extend({ firstName: DS.attr('string'), lastName: DS.attr('string'), nationality: DS.attr('string'), createdAt: DS.attr('date') }); 

<strong> routes / app _route.js

 App.StudentsRoute = Ember.Route.extend({ model: function() { return this.store.find('student'); } }); 

router.js

 App.Router.map(function () { this.resource('students', {path: '/'}); }); 

And here is the API response:

 { students: [ { nationality: "Lorem", lastName: "Doe", firstName: "John", _id: "53f87200f3750319b4791235", createdAt: "2014-08-23T10:50:40.661Z" }, { nationality: "Lorem", lastName: "Doe", firstName: "John", _id: "53f87299f3750319b4791234", createdAt: "2014-08-23T10:50:40.661Z" } ] } 

It looks like the store is not loading data from the API, but the JSON data format looks great. Any idea on what might be wrong?

Thanks!

+5
source share
3 answers

So, after searching in more detail about the stack overflow, I realized that the serializer should now be in a separate class than the RESTAdapter, so the working code is as follows:

store.js

 App.ApplicationAdapter = DS.RESTAdapter.extend({ host: 'http://localhost:3000' }); App.ApplicationSerializer = DS.RESTSerializer.extend({ primaryKey: '_id', serializeId: function(id) { return id.toString(); } }); 
+3
source

Here is an updated answer for people using ember-cli .

 ember g adapter application #=> creates app/adapters/application.js ember g serializer application #=> creates app/serializers/application.js 

In app/adapters/application.js :

 import DS from 'ember-data'; export default DS.RestAdapter.extend({ host: 'http://localhost:3000' }); 

In app/serializers/application.js :

 import DS from 'ember-data'; export default DS.RESTSerializer.extend({ primaryKey: '_id', serializeId: function(id) { return id.toString(); } }); 
+2
source

I was getting this error, and it had nothing to do with any of the usual suspects.

In coffeescript, I started defining a model.

  App.Cost = DS.Model.extend amount: DS.attr 'number' active: DS.attr 'boolean' 

To create a second model, I c / p my first model and removed the attributes:

  App.Cost = DS.Model.extend 

He returned and tried to run a seemingly unrelated model

  localhost:3000/products 

This led to an error

  Error while processing route: products.index 

Just making sure that my model was named correctly, fixed the error:

  App.Cost = DS.Model.extend(...) App.Price = DS.Model.extend(...) <- instead of repeating the Cost model 

It was re-produced, so I thought it might be useful to others.

0
source

Source: https://habr.com/ru/post/1201237/


All Articles