【问题标题】:Dojo Store memory queryingDojo Store 内存查询
【发布时间】:2016-09-07 04:46:45
【问题描述】:

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

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 查询结果的情况下获取“名称”为“一”或“二”的对象,如下所示

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

【问题讨论】:

    标签: memory dojo store


    【解决方案1】:

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

    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

    【讨论】:

    • 感谢您的回复。是否可以在不提供 store.query({ name: "one" || name: "two" }) 之类的函数的情况下进行查询。我只是想知道是否可以在没有任何功能的情况下进行这样的查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2011-01-23
    相关资源
    最近更新 更多