2

我正在为Rhom API编写一个 Ember-Data 适配器。我已经写了代码。我在一个简单的 Todo App 中使用它。当我创建一个新项目时,它会进入 SQLite 数据库。但是当我启动应用程序时,已经存在的应用程序不会加载到商店中。

console.log我在我的适配器中写了一个findAll,我可以看到它从 Rhom API 获取一个对象数组并返回一个带有这些结果的承诺。但是为什么它没有加载到商店中?

我以 localstorage-adapter 为例并做到了这一点。这是我的findAll:

 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:extractVarssourceIdtoId辅助从 Rhom 返回的记录中提取对象。

4

1 回答 1

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

希望能帮助到你。

于 2013-09-29T20:44:17.250 回答