Dojo dstore:服务器端查询和客户端过滤

时间:2015-07-27 17:00:36

标签: javascript dojo

我对如何使用dstore支持服务器端查询和客户端过滤感到困惑,并希望得到一些指导。我的情景:

  • 我正在与存档服务器进行通信,因此我只获取和查询请求,没有更新数据。
  • 我想执行服务器端查询和客户端过滤。
  • 我想缓存结果,所以我没有为每个fetch()访问服务器。

如果我使用Request,filter()会将其查询参数传递给服务器,但数据不会被缓存,我无法告诉如何在客户端进行过滤。

如果我使用RequestMemory,filter()将应用于本地缓存,我无法告诉如何为服务器指定参数。

所有的作品似乎与dstore在一起,我还没想出如何把它们放在一起。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

看起来我想通了。关于我如何使用RequestMemory有几个问题。第一个是我没有意识到RequestMemory会自动调用fetch()。第二个问题是我将一个对象用作queryParam,它应该是一个数组。

为了满足我的要求,我创建了一个从Request和Cache扩展的新商店,就像RequestMemory一样,但我没有在postscript()函数中调用fetch()。然后我可以将参数传递给服务器:

store.fetch({queryParams: ['key=value']}).then(function(data) {
  console.log("fetch", data);
});

我可以通过设置store.isValidFetchCache = true然后执行客户端过滤器来“冻结”商店:

store.filter({type: 'xyz'}).fetch().then(function(data) {
  console.log("filter", data);
});