Search code examples
memorydojostore

Dojo Store memory querying


I have stored some data like below

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}
    ]
});

I can query all items where "prime" is true like below.

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

But how can I get the object whose "name" is either "one" or "two" without using foreach on query results like below

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

Solution

  • Yes you can perform query on multiple value for same field :

    1. Without passing function using 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. For complex querying pass a function that has a the search criteria to your query as parameter like below:

    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