ParseでQueryをfindする方法(JavaScriptを使う)

More than 3 years have passed since last update.

Baasの中ではParseは有名かと思いますが、Javascript SDKでDBからデータを見つける方法を書いている人があまりいないので、メモしておきます。


SampleのDB

以下のようなDBがあるとします。ParseのClass名をUserSettingsとします。


UserSettings

objectId
UserName
EnableHoge

1m31ipuy
Bob
true

c23japfv
Mike
false

opapsc13
May
true

poiua123
Sakura
false

qPaf2f0f
Bob
false

objectIdはParse.Objectに設定されるIdです。


ParseのDBの概要

ParseはParse.Objectというオブジェクトでデータが保存されます。上のそれぞれの行が1つのParse.Objectに相当します。


Parse.Objectを1つ取り出す場合(ObjectIdが既知の場合)

簡単です。前提条件として、ObjectIdがわかっているとします。

var UserSettings = Parse.Object.extend("UserSettings");

var query = new Parse.Query(UserSettings);
query.get("opapsc13", {
success: function(userInfo) {
// The object was retrieved successfully.
},
error: function(userInfo, error) {
// The object was not retrieved successfully.
// error is a Parse.Error with an error code and description.
}
});


DBから検索して条件に完全に一致するものを取得する場合

Parse.Queryのメソッドを駆使すると色々とできますが、複数の条件に完全一致したデータをとる方法です。

equalToを使います。equalToはParse.Queryを返すので、以下のように連鎖できます。

    var UserSettings = Parse.Object.extend("UserSettings");

var query = new Parse.Query(UserSettings);
query.equalTo('UserName', 'Mike').equalTo('EnableHoge', true)
query.find({
success: function(results) {
// resultsには一致したParse.Objectの配列がかえります。
console.log("find:"+results.length); // この場合はresults.length === 1
console.log("Parse.Object:"+results[0]); //results[0]はParse.Object
// この場合は、一行目のBob (ObjectId: 1m31ipuy)が取得できます。最下行のBobは取得されません。
},
error: function(error) {
}
});

上の2つの基本を覚えれば、後は応用が効くと思います。私はParse.Object.extendで取得したObjectをnew Parse.Queryで初期化するところで失敗してはまりました。


また、queryに対してequalToやlessなどで色々と検索条件を追記して、最後にfindで実際の検索を行うので、そこが注意点でしょうか。