适用于Rhom的Ember-Data定制适配器 - FindAll无法正常工作

时间:2013-09-29 19:04:53

标签: ember.js rhomobile rhodes

我正在为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时,它也会返回相同类型的对象。

我该怎么办?

enter image description here

PS:extractVarssourceIdtoId辅助从Rhom返回的记录中提取对象。

1 个答案:

答案 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);
  });
}

希望它有所帮助。