从Node + Express REST服务器获取JSON时,Ember数据中断

时间:2015-01-04 14:50:00

标签: node.js rest ember.js express ember-data

我正在尝试从使用Node.js和Express构建的REST服务器获取JSON数据,然后将其用作我的Ember#Route中的模型。

我想要获取的数据:

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' 
});

映射:

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

My Route看起来像这样:

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

我知道在涉及JSON文件时,ember-data遵循某些约定。 我的服务器以这种方式提供JSON:

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

ember-data抛出以:

开头的长错误列表
"Error while processing route: books" "invalid 'in' operand record._attributes"    
"ember$data$lib$system$model$attributes$$getValue@http://localhost:8080/static/ember-data.js:8176:1
ember$data$lib$system$model$attributes$$attr/<@http://localhost:8080/static/ember-data.js:8202:26
computedPropertySet@http://localhost:8080/static/ember.prod.js:11882:15
computedPropertySetWithSuspend@http://localhost:8080/static/ember.prod.js:11842:9
makeCtor/Class@http://localhost:8080/static/ember.prod.js:33887:17
...

现在我不知道出了什么问题以及如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

看起来我犯的错误在于声明模型。 ID属性不应在此处声明,正确的模型如下所示:

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