2015-01-04 2 views
1

Я пытаюсь получить данные JSON с сервера REST, построенного с помощью Node.js и Express, а затем использовать его в качестве модели в моем Ember # Route.Ember Data breaks при извлечении JSON с сервера REST Node + Express

Данные, которые я пытаюсь принести:

var books = [ 
    { id: 98, author: 'Stanisław Lem', title: 'Solaris' }, 
    { id: 99, author: 'Andrzej Sapkowski', title: 'Wiedźmin' } 
]; 

Типового я использую:

App.Book = DS.Model.extend({ 
    id: DS.attr('number'), 
    author: DS.attr('string'), 
    title: DS.attr('string') 
}); 

я создал RESTAdapter таким образом:

App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: 'http://localhost:8080' 
}); 

Mapping:

App.Router.map(function() { 
    this.resource("books"); 
}); 

Мой маршрут выглядит следующим образом:

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

Я знаю, что уголек-данных следует определенной конвенции, когда речь идет о JSON файлов. Мой сервер предоставляет JSONs таким образом:

app.get('/books', function (request, response) { 
    console.log('In GET function '); 
    response.json({'books': books}) 
}); 

Тогда, после ввода

http://localhost:8080/books 

Я получаю

{"books":[{"id":98,"author":"Stanisław Lem","title":"Solaris"},{"id":99,"author":"Andrzej Sapkowski","title":"Wiedźmin"}]} 

, но когда я вхожу

http://localhost:8080/#/books 

уголек-данных проливает длинный список ошибок t шляпа начинается с:

"Error while processing route: books" "invalid 'in' operand record._attributes"  
"[email protected]://localhost:8080/static/ember-data.js:8176:1 
ember$data$lib$system$model$attributes$$attr/<@http://localhost:8080/static/ember-data.js:8202:26 
[email protected]://localhost:8080/static/ember.prod.js:11882:15 
[email protected]://localhost:8080/static/ember.prod.js:11842:9 
makeCtor/[email protected]://localhost:8080/static/ember.prod.js:33887:17 
... 

и теперь я не знаю, что не так и как исправить это.

ответ

1

Похоже, что я сделал ошибку в объявлении модели. Идентификатор атрибута не должен быть указан здесь, правильная модель выглядит так:

App.Book = DS.Model.extend({ 
    author: DS.attr('string'), 
    title: DS.attr('string') 
}); 
Смежные вопросы