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

如何获取dojo数据存储的项目计数(大小)?,dojo,Dojo,我在read API中看不到任何可以访问以下内容的内容: 上的一个示例演示了一种方法。这里有一个fetchwithoutquery参数返回存储中的所有项目 var store = new some.Datastore(); var gotItems = function(items, request){ console.log("Number of items located: " + items.length); }; store.fetch({onComplete: gotItems})

我在read API中看不到任何可以访问以下内容的内容:

上的一个示例演示了一种方法。这里有一个
fetch
without
query
参数返回存储中的所有项目

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

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

我实现的所有存储都希望数据包含
totalCount
属性,如下所示:

{
  identifier: 'id',
  items: [
    { id: 123, name: 'aaa', ... },
    { id: 456, name: 'bbb', ... },
    ...
  ],
  totalCount: 525
}
当查询返回时(在
onComplete
中),存储将保存此信息。然后通过存储上的
getTotalCount()
方法公开该值

var store = new some.Datastore();
var gotItems = function(items, request){
  console.log("Number of items located: " + items.length);
};
store.fetch({onComplete: gotItems});
当与
开始
计数
请求选项结合使用时,这允许您进行良好的ajax分页(“显示525中的1-50”)


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

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

在服务器上,您应该查看 在请求中的范围标头处,以了解要返回的项目。这个 服务器应使用Content Range标头响应,以指示有多少个 正在返回的项目以及存在的项目总数:

Content-Range: items 0-24/66

From:

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

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

store.fetch({query: {}, onBegin: size, start: 0, count: 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
      },
   })

使用dojo.data.ItemFileReadStore,您可以执行以下操作:myStore.\u getItemsArray().length,但这是该数据存储所特有的。我想知道获得商店规模的正确方法是什么。这种方法比我最初想象的还要粗糙。在调用fetch之前,数组不会初始化。因此,您必须确保在检查数组长度之前获取数据。>>store.\u getItemsArray().length 0>>>store.fetch()Object store=Object>>>store.\u getItemsArray().length 2