Dojo dstore:服务器端查询和客户端过滤
Dojo dstore: both server-side queries and client-side filtering
我对如何使用 dstore 同时支持服务器端查询和客户端过滤感到有点困惑,希望得到一些指导。我的场景:
- 我正在与存档服务器通信,所以我只有获取和查询请求,没有更新数据的请求。
- 我想执行服务器端查询和客户端过滤。
- 我想缓存结果,这样我就不会在每次 fetch() 时都访问服务器。
如果我使用 Request,filter() 会将其查询参数传递给服务器,但数据不会被缓存,我不知道如何在客户端进行过滤。
如果我用的是RequestMemory,filter()是应用到本地缓存,不知道怎么给服务器指定参数。
所有的部分似乎都在 dstore 中,我只是还没有弄清楚如何将它们放在一起。感谢您的帮助。
看来我明白了。我在使用 RequestMemory 时遇到了一些问题。首先是我没有意识到 RequestMemory 会自动调用 fetch() 。第二个问题是当它应该是一个数组时我使用了一个对象作为查询参数。
为了满足我的要求,我创建了一个从 Request 和 Cache 扩展而来的新存储,就像 RequestMemory 一样,但我没有在 postscript() 函数中调用 fetch()。然后我可以将参数传递给服务器:
store.fetch({queryParams: ['key=value']}).then(function(data) {
console.log("fetch", data);
});
然后我可以通过设置 store.isValidFetchCache = true
来 'freeze' 商店,然后执行客户端过滤器:
store.filter({type: 'xyz'}).fetch().then(function(data) {
console.log("filter", data);
});
我对如何使用 dstore 同时支持服务器端查询和客户端过滤感到有点困惑,希望得到一些指导。我的场景:
- 我正在与存档服务器通信,所以我只有获取和查询请求,没有更新数据的请求。
- 我想执行服务器端查询和客户端过滤。
- 我想缓存结果,这样我就不会在每次 fetch() 时都访问服务器。
如果我使用 Request,filter() 会将其查询参数传递给服务器,但数据不会被缓存,我不知道如何在客户端进行过滤。
如果我用的是RequestMemory,filter()是应用到本地缓存,不知道怎么给服务器指定参数。
所有的部分似乎都在 dstore 中,我只是还没有弄清楚如何将它们放在一起。感谢您的帮助。
看来我明白了。我在使用 RequestMemory 时遇到了一些问题。首先是我没有意识到 RequestMemory 会自动调用 fetch() 。第二个问题是当它应该是一个数组时我使用了一个对象作为查询参数。
为了满足我的要求,我创建了一个从 Request 和 Cache 扩展而来的新存储,就像 RequestMemory 一样,但我没有在 postscript() 函数中调用 fetch()。然后我可以将参数传递给服务器:
store.fetch({queryParams: ['key=value']}).then(function(data) {
console.log("fetch", data);
});
然后我可以通过设置 store.isValidFetchCache = true
来 'freeze' 商店,然后执行客户端过滤器:
store.filter({type: 'xyz'}).fetch().then(function(data) {
console.log("filter", data);
});