Dojo Store内存查询

Dojo Store memory querying

我已经存储了一些数据,如下所示

var store = new Memory({
    data: [
        {id: 1, name: "one", prime: false },
        {id: 2, name: "two", even: true, prime: true},
        {id: 3, name: "three", prime: true},
        {id: 4, name: "four", even: true, prime: false},
        {id: 5, name: "five", prime: true}
    ]
});

我可以查询所有 "prime" 为真的项目,如下所示。

var results = store.query({ prime: true });

但是如何在不对查询结果使用 foreach 的情况下获取 "name" 为 "one" 或 "two" 的对象

var results = store.query().forEach(function(each){
    if(each.name == "one" || each.name == "two") {
        console.log(each)
    }
})

是的,您可以对同一字段的多个值执行查询:

  1. 没有传递函数使用regex:

require([
  "dojo/store/Memory",
  "dojo/domReady!"
], function(Memory) {
  
  var store = new Memory({
    data: [
        {id: 1, name: "one", prime: false },
        {id: 2, name: "two", even: true, prime: true},
        {id: 3, name: "three", prime: true},
        {id: 4, name: "four", even: true, prime: false},
        {id: 5, name: "five", prime: true}
    ]
  });
  
  results = store.query({ name: new RegExp("one|two")});
  
  console.log(results);
});
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/dojo.js"></script>

Fiddle

  1. 对于复杂的查询,将具有搜索条件的函数作为参数传递给您的查询,如下所示:

require([
  "dojo/store/Memory",
  "dojo/domReady!"
], function(Memory) {
  
  var store = new Memory({
    data: [
        {id: 1, name: "one", prime: false },
        {id: 2, name: "two", even: true, prime: true},
        {id: 3, name: "three", prime: true},
        {id: 4, name: "four", even: true, prime: false},
        {id: 5, name: "five", prime: true}
    ]
  });
  
  var results = store.query(
      function (element) {
        return element.name == "one" || element.name == "two";
      }
  );
  
  console.log(results);
});
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/dojo.js"></script>

Fiddle