如何获取dojo数据存储区的项目数(大小)?

时间:2009-10-27 23:58:33

标签: dojo

我没有在read API中看到任何提供访问权限的内容: http://api.dojotoolkit.org/jsdoc/1.3.2/dojo.data.api.Read

5 个答案:

答案 0 :(得分:8)

dojocampus的一个例子展示了一种方式。这里没有fetch参数的query会返回商店中的所有商品。

var store = new some.Datastore();
var gotItems = function(items, request){
  console.log("Number of items located: " + items.length);
};
store.fetch({onComplete: gotItems});

答案 1 :(得分:2)

dojo.data.api.Read的onBegin函数具有匹配的总大小:

function size(size, request){
  // Do whatever with the size var.
}

store.fetch({query: {}, onBegin: size, start: 0, count: 0});

从这个快速入门:http://dojotoolkit.org/reference-guide/1.7/quickstart/data/usingdatastores/faq.html#question-6-how-do-i-get-a-count-of-all-items-in-a-datastore

答案 2 :(得分:1)

任何数据存储的有线数据格式都是特定于商店的。为了获得总项数(和其他元数据),必须将其作为响应的一部分返回。这是进行服务器端分页的唯一方法。

我实施的所有商店都希望数据包含totalCount属性,如下所示:

{
  identifier: 'id',
  items: [
    { id: 123, name: 'aaa', ... },
    { id: 456, name: 'bbb', ... },
    ...
  ],
  totalCount: 525
}

商店在查询返回时保存此信息(在onComplete中)。然后通过商店上的getTotalCount()方法公开该值。

当与startcount请求选项一起使用时,这可以让您拥有更好的ajax分页(“显示1-50 of 525”)。

由于这不是API的一部分,因此read API的核心实现不会实现它。这种技术的一种形式(类似于我所做的)似乎确实由dojo.data.QueryReadStore实现,所以你也可以在那里查看。

答案 3 :(得分:0)

我正在使用JsonRest商店寻找这个问题的答案,这似乎就是这样:

  

在你的服务器上,你应该看看   在请求中的Range标头处,以了解要返回的项目。该   服务器应该使用Content-Range标头响应以指示多少   正在退回物品以及存在多少物品:

Content-Range: items 0-24/66

来自:http://dojotoolkit.org/reference-guide/dojo/store/JsonRest.html

答案 4 :(得分:0)

以下代码对我有用

  // questionStoreReader is a pointer that points to and can read ask.json file

  var questionStoreReader=new dojo.data.ItemFileReadStore({url:"ask.json"});

  questionStoreReader.fetch(
   {
     onComplete:function(items,request) // items is an array
      {
        alert(items.length);// number of items in ask.json
      },
   })