非公式で作っているmBaaS用RubyライブラリNCMB Ruby Clientをアップデートしました。今回でほぼデータストアの機能は満たしています。
ライブラリのインストール
インストールは gem コマンドで行います。
gem install ncmb-ruby-client
型への対応
現在サポートしているのは以下の型です。
- 文字列
- 数字
- 真偽値
- 配列
- オブジェクト(Hashを利用)
- 日付(Timeを利用)
- 位置情報(NCMB::GeoPointを利用)
ACL/リレーション/ポインターはまだ未対応です。
それらを set メソッドで指定して、 save メソッドで保存できます。
example = NCMB::Object.new 'Example' example.set('String', 'Test String') example.set('Integer', 100) example.set('Boolean', true) example.set('Array', [1, 2, 3, "Orange", "Tomato"]) example.set('Object', |test1|| example.set('Location', NCMB::GeoPoint.new(50, 30)) example.set('MultipleLine', "test\ntest\n") example.set('Increment', NCMB::Increment.new(2)) example.set('Date', Time.new(2016, 2, 24, 12, 30, 45)) example.save
更新する場合はアップデートです。
example.set('Date', Time.now) example.update
削除は delete です。
example.delete
delete_allという指定したクラスのデータをすべて削除するメソッドもあります。ただしこれは権限に対応している範囲のみです。
NCMB::DataStore.new('Example').delete_all
データストアの各行のデータはDataStoreオブジェクトからも作れます。
DataStore = NCMB::DataStore.new('Example') item = DataStore.new(|name||
検索
検索のオペランドは以下を用意しています。
メソッド | 説明 |
---|---|
equalTo | 同じ |
notEqualTo | 同じではない |
greaterThan | より大きい |
greaterThanOrEqualTo | 以上 |
lessThan | 未満 |
lessThanOrEqualTo | 以下 |
in | 引数は配列。その中に含まれるかどうか |
notIn | 引数は配列。その中に含まれないかどうか |
exists | 存在確認はtrue、存在しない場合はfalse |
regex | 正規表現 |
inArray | 配列に含まれるかどうか |
notInArray | 配列に含まれないかどうか |
allInArray | 配列にすべて含まれるかどうか |
withinKilometers | 指定した位置情報の指定したキロメーター以内にあるか |
withinMiles | 指定した位置情報のマイル以内にあるかどうか |
withinRadians | 指定した位置情報のラジアン以内にあるかどうか |
withinSquare | 2つの位置情報を指定した範囲内にあるかどうか |
基本的には次のように指定します。
DataStore = NCMB::DataStore.new('Example') DataStore.greaterThan("Integer", 100).each do |item| puts item[:Integer] end
ちょっと違うものとしては位置情報検索があります。これは位置情報オブジェクトを指定します。以下は100キロ以内にあるデータを取り出す場合の指定です。
DataStore = NCMB::DataStore.new('Example') geo1 = NCMB::GeoPoint.new(30, 50) # 緯度経度 DataStore.withinKilometers("Location", geo1, 100).each do |item| puts item[:Location] end
範囲の場合は次のようになります。
DataStore = NCMB::DataStore.new('Example') geo1 = NCMB::GeoPoint.new(30, 50) # 緯度経度 geo2 = NCMB::GeoPoint.new(40, 60) # 緯度経度 DataStore.withinSquare("Location", geo1, geo2).each do |item| puts item[:Location] end
ポインターや権限対応など、まだ幾つか未対応の機能が残っていますが、データストアの操作についてはほぼ行えるようになっています。Rubyを使ってmBaaSの操作を行う際にはぜひご利用ください。
また、不具合や要望、pull requestなどがありましたらGitHubリポジトリまでアクセスしてください。
moongift/ncmb-ruby-client: A simple Ruby client for the Nifty cloud mobile backend REST API