Javascript 在dojo中查询存储以查找小于给定数字的数字

Javascript 在dojo中查询存储以查找小于给定数字的数字,javascript,dojo,Javascript,Dojo,举一个例子 Im使用数据存储 数据存储包含类型为ItemFileWriteStore的存储 我正在尝试以下方法: var myNumber = 12; // but could be any number like -12, 0.12, 12345 or -12345.1 dataStore.store.query(function(storeItem){ return storeItem.number < myNumber; }) 我想查询给定的存储以找到一个小于给定数字的数字

举一个例子

Im使用数据存储

数据存储包含类型为ItemFileWriteStore的存储

我正在尝试以下方法:

var myNumber = 12; // but could be any number like -12, 0.12, 12345 or -12345.1
dataStore.store.query(function(storeItem){
    return storeItem.number < myNumber;
})
我想查询给定的存储以找到一个小于给定数字的数字

为了澄清我真正想要理解的是,为什么将函数作为参数传递给query()方法不起作用,以及如何使它起作用


谢谢,

因为您有一个
ItemFileWriteStore
,所以您可以使用它的函数
fetch
。它也许能满足你的需要。假设
store
是您的
ItemFileWriteStore
,您将执行以下操作:

store.fetch({
   sort: [{attribute: "number", descending: true}]
   onComplete: function(items, request) {
      // items will be an array of the items in your store, 
      // sorted by the "number" attributed in descending order
   }
});

onComplete
函数中,您将根据number参数以降序排列已排序的存储项数组。此时,查找所有小于指定数字的数字(而不是如您所述的仅为1)是很简单的。

您也可以使用dataStore.store.query()获取所有项目,但事实并非如此。我只是想澄清一下dataStore.store-dataStore,dataStore.store.store-ItemFileWriteStore。也许我不明白你想做什么?使用sort参数,您可以按“number”对所有项目进行排序。换句话说,您可以轻松地循环并比较“item[i]”和“myNumber”,如果它小于myNumber,则存储它。一旦你超过“我的号码”,你就停止循环。这不是最终目标,还是我误解了?我正在尝试理解如何将函数作为参数传递给dataStore.store.query()方法,该方法将执行所有筛选。我也在尝试理解为什么它不起作用,很抱歉造成混淆我将更新我的问题好的,我明白你现在的问题。如果查看链接()页面代码上的注释,您会注意到函数查询使用的参数“query”是一个对象,而不是函数。所以我不确定你能不能像你尝试的那样…是的,你可以传入一个带有参数名和值的对象,它也可以是正则表达式,而且我很确定你可以覆盖查询方法。据我所知,它返回的是一个延迟对象,但您可以在创建数据存储实例时覆盖查询引擎和首选返回值@Eric Alberson谢谢不管怎样我真的很感谢你的帮助。
[{id: 1, number: 2345},{id: 2, number: 23.45},{id: 3, number: -2345},{id: 4, number: 2345},{id: 5, number: 0.2345}]
store.fetch({
   sort: [{attribute: "number", descending: true}]
   onComplete: function(items, request) {
      // items will be an array of the items in your store, 
      // sorted by the "number" attributed in descending order
   }
});