データストアでは多数のオペランド(検索条件)を用意しています。しかし多くの方が「同じ」「以上」「以下」「より大きい」「より小さい」くらいしか使っていないのではないでしょうか。
そこで今回はカラムをオブジェクト型にした時の複雑な条件設定方法について紹介します。
値が一致するものを検索する
例えば hash というカラムの中に次のような値を入れたとします。
{ "a":"b", "c":"d" }
この時、以下のような検索でデータを取り出せます。
ObjectClass .equalTo('hash.a', 'b') .fetchAll() .then(results => { console.log(results) })
カラム名 + キー名で指定できるのです。この特性を使うと、あるポインターのオブジェクトが指定されているデータと言った絞り込みもできます。
ObjectClass .equalTo('hash.__type', 'Pointer') .equalTo('hash.objectId', 'AAAAAAA') .equalTo('hash.className', 'OtherClass') .fetchAll() .then(results => { console.log(results) })
オブジェクト内の配列で検索する
次にカラム内のデータが次のような値だったとします。
{ "a":[ 1,2,3 ] }
このような時に配列の値を検索したいことがあるでしょう。その場合は以下のようにします。
ObjectClass .equalTo('hash.a.0', 1) .fetchAll() .then(results => { console.log(results) })
配列の添字を指定すると、その値だけが取り出せます。その上でイコールや以上、以下、より大きい、より小さいといった指定ができます。
配列の値で検索
オブジェクトの中にある配列の値で検索も可能です。
ObjectClass .inArray('hash.a', 4) .fetchAll() .then(results => { console.log(results) })
まとめ
データストアの中には数値や文字列、日付や位置情報などの情報や配列、オブジェクトといったデータを入れることもできます。柔軟にデータが入れられる一方で、検索する方法がなければ利用するのも難しいでしょう。
今回紹介した方法を使えばオブジェクトとしてデータを保存するのも難しくなく感じてもらえるはずです。ぜひ利用してください。