ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

非公式Rubyライブラリを更新しました(データストア対応)

非公式で作っている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