我指的是示例here。我如何获得最大ID?
答案 0 :(得分:2)
有很多方法可以做到这一点。例如,您可以根据ID对商店进行排序并获取第一个元素,例如:
store.query({ }, {
sort: [{
attribute: "id",
descending: true
}]
})[0].id;
在这个例子中,它查询商店内的所有对象,按ID(降序)对它们进行排序。这显然意味着第一个元素具有最高的ID,因此您可以获取该项并检索ID属性。
关于这一点的好处是它只使用Dojo商店API,这意味着这将适用于实现dojo/store
API的任何商店,例如dojo/store/Memory
。
另一个解决方案是自己搜索ID,你可以像Lukasz在his answer中那样做,但如果你使用store.data
,这意味着它只适用于dojo/store/Memory
并且您正在访问您不应访问的属性。
所以要自己搜索一下,你可以使用:
require([ "dojo/store/Memory", "dojo/_base/array" ], function(Memory, arrUtils) {
var maxId = null;
arrUtils.forEach(store.query({}), function(obj) {
if (maxId === null || (obj !== null && obj.id > maxId)) {
maxId = obj.id;
}
});
});
这里发生的是我浏览商店内的每个对象,然后检查maxId
是null
(=未设置)还是对象ID大于maxId
如果这是真的,那么我们将maxId
替换为当前对象的ID。
答案 1 :(得分:1)
MemoryStore
只是保留一些任意数据,当我需要获得最大ID时,我会迭代所有元素:
var data = store.data
var maxId = 1
var idField = 'id'
for (var i=0;i<data.length;i++) {
var row = data[i]
if (row[idField] && row[idField] > maxId)
maxId = row[idField]
}