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

Dojo dstore: both server-side queries and client-side filtering

本文关键字:客户端 过滤 查询 服务器端 dstore Dojo      更新时间:2023-09-26

我有点困惑,如何支持服务器端查询和客户端过滤与dstore,我希望一些指导。我的场景:

  • 我正在与存档服务器通信,所以我只有get和查询请求,没有更新数据。
  • 我想同时执行服务器端查询和客户端过滤。
  • 我想缓存的结果,所以我不访问服务器的每次fetch()。

如果我使用请求,filter()将把它的查询参数传递给服务器,但是数据没有缓存,我不知道如何在客户端进行过滤。

如果我使用RequestMemory, filter()将应用于本地缓存,并且我不知道如何为服务器指定参数。

所有的部分似乎都在那里与dstore,我只是还没有想出如何把它们放在一起。谢谢你的帮助。

看来我明白了。我如何使用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);
});