我想利用Ember本地存储适配器(LSAdapter)和Ember REST适配器(RESTAdapter),以便为所有用户提供集中式数据库,同时避免为每个用户操作发送Ajax请求。
具体来说,我想:
我的后端服务器不是Rails,所以请将答案设为通用。
是否可以在Ember应用程序中使用BOTH LSAdapter和RESTAdapter?如果是,请提供如何设置的代码示例。
如果您提供步骤1和3的代码示例,我将不胜感激,基本上,数据库如何与本地存储通信,反之亦然。
如果无法同时使用LSADapter和RESTAdapter,我该怎么做才能完成第1步和第3步?
我唯一可以想到的是将Ember应用商店设置为RESTAdapter,然后直接在我的应用中调用Web Storage localstorage,而不是直接从LSAdapter调用它。如果有更简单或内置的方式,请告诉我。
答案 0 :(得分:2)
在阅读Ember数据的DS.Store评论后,似乎可以使用2 adapters at once:
您可以通过多种方式从商店中检索模型。检索记录
对于特定ID,请使用DS.Model
的{{1}}方法:
find()
如果您的应用程序有多个var person = App.Person.find(123);
个实例(不常见的情况),您可以
指定应该使用哪个商店:
DS.Store
如果我试一试,我会更新这个答案。
更新1:
查看UPDATED for Additional question中的代码,其中 FixtureAdapter 和 RestAdapter 都会被调用。
答案 1 :(得分:0)
//define your main adapter as usual
App.Store = DS.Store.extend({
revision: 13,
adapter: DS.RESTAdapter.create({
url: app.apiUrl,
namespace: app.apiNamespace
})
});
//App.Product for example will use the rest adapter
App.Product = DS.Model.extend({
name: DS.attr('string'),
});
App.Somemodel = DS.Model.extend({
name: DS.attr('string'),
});
//App.Somemodel for example will use the fixture adapter
App.Store.registerAdapter('App.Somemodel', DS.FixtureAdapter);