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で実際の検索を行うので、そこが注意点でしょうか。