我正在为Rhom API编写Ember-Data适配器。我写了代码。我在一个简单的Todo应用程序中使用它。当我创建一个新项目时,它会进入SQLite数据库。但是当我启动应用程序时,已经存在的应用程序不会在商店中加载。
我在我的适配器的console.log
中写了一个findAll
,我可以看到它从Rhom API获取一个对象数组并返回带有这些结果的promise。但为什么它没有加载到商店?
我使用localstorage-adapter作为示例并执行此操作。这是我的发现:
extractVars: function(rhomRecord) {
return rhomRecord.vars();
},
sourceIdToId: function(record) {
record["id"] = record.source_id;
return record;
},
findAll: function(store, type) {
var records = Rho.ORM.getModel(this.model).find('all');
var results = records.map(this.extractVars);
var results = results.map(this.sourceIdToId);
console.log(results);
return Ember.RSVP.resolve(results);
},
正如您所看到的,console.log打印出以下内容,它只是包含我需要的对象数组。当我尝试使用locastorate时,它也会返回相同类型的对象。
我该怎么办?
PS:extractVars
和sourceIdtoId
辅助从Rhom返回的记录中提取对象。
答案 0 :(得分:0)
我不确定这是否会对您有所帮助,但我想只是因为.find()
会返回一个承诺,您应该使用.then()
回调来解析您的模型:
findAll: function(store, type) {
return Rho.ORM.getModel(this.model).find('all').then(function(records) {
var results = records.map(this.extractVars);
var results = results.map(this.sourceIdToId);
console.log(results);
return Ember.RSVP.resolve(results);
});
}
希望它有所帮助。