1

所以说我有一家商店,在我的数据库中我有 20,000,000 行。(也足以让我设置页面大小,这样我每页只能返回 100 行)。由于我设置了页面大小,所以当我进行原始调用时,我只能得到 100 个项目。因此,以下返回 null:

Ext.getStore('MyLargeStore').getById(200); // returns null

这对我来说很有意义,因为从技术上讲,JS 端的商店没有设置特定的 id。但是,如果该 id 不存在,是否有强制查找?据我所知,我已经在我的商店中完成了所有需要它的“远程”和“自动”:

Ext.define('MyApp.store.MyLargeStore', {
extend: 'Ext.data.Store',

requires: [
    'MyApp.model.MyLargeModel'
],

constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        autoLoad: true,
        autoSync: true,
        model: 'MyApp.model.MyLargeModel',
        remoteFilter: true,
        remoteSort: true,
        storeId: 'MyLargeModel',
        buffered: true,
        pageSize: 100
    }, cfg)]);
}
});

无论如何,只要 id 不存在,它就可以从远程服务器中提取?我似乎在文档中找不到方法(除非我错过了它,因为他们的文档有时有点难以破译=/)

另外,我假设您始终可以在商店中加载,但我很确定如果我只加载那 1 行,那么使用该商店的所有其他位置也将只有该行(我不一定想要)那么理论上,动态创建商店是我唯一的选择吗?似乎应该有一个更简单的方法,因此我想我会问。必须有一些更好的方法,而不是创建一个商店然后从那个新商店抓取记录......

4

1 回答 1

1

What your trying to do here is the wrong approach to the problem. You need to step back to what you need this row for and make an independent ajax call to your server with the ID of the row your trying to look up. The server will then look up that single row on the DB and then return the data to create a model for whatever you need the row for. This logic should be done independent of the store.

于 2013-07-09T19:33:36.673 回答