概要
前回 は firebase-ruby を使った GettingStarted 的な記事を紹介しました
今回はリアルタイムデータベースを操作できるその他のメソッドについて挙動を確認してみました
環境
- CentOS 7.3.1611
- ruby 2.3.3p222
- firebase-ruby 0.2.6
使用するコード
- bundle init
- vim Gemfile
gem "firebase"
- bundle install
- vim test.rb
require 'firebase'
class FB
BASE_URI = 'https://project-id.firebaseio.com/'
SECRET_KEY = 'your-database-secret-key'
def initialize
@client = Firebase::Client.new(BASE_URI, SECRET_KEY)
end
def get(path, query)
@client.get(path, query)
end
def push(path, hash)
@client.push(path, hash)
end
def set(path, hash)
@client.set(path, hash)
end
def update(path, hash)
@client.update(path, hash)
end
def delete(path, query)
@client.delete(path, query)
end
end
f = FB.new
res = f.push('test', { :name => "hoge" })
id = res.body['name']
res = f.get("test/#{id}", {})
p res.body['name'] # => "hoge"
f.set('test1', { :name => "fuga" })
res = f.get('test1', {})
p res.body['name'] # => "fuga"
f.update("test/#{id}", { :name => "hogehoge" })
res = f.get("test/#{id}", {})
p res.body['name'] # => "hogehoge"
f.update('test1', { :name => "fugafuga" })
res = f.get('test1', {})
p res.body['name'] # => "fuga"
f.delete("test/#{id}", {})
f.delete('test1', {})
- bundle exec ruby test.rb
BASE_URI と SECRET_KEY は自分のプロジェクトの値を設定してください
挙動説明
firebase-ruby にはデータを登録するためのメソッドが 2 つ用意されています
push と set があります
push の場合、基本的に毎回新規オブジェクトの追加となります
追加したオブジェクトに自動で ID を振ってくれるため、その ID でオブジェクトを識別します
ID は push したレスポンス情報に含まれています
方や set は指定したパスにそのままデータを登録します
なので 2 回 set しても内容は変わりません、オブジェクトも増えません
get でアクセスする場合のパスにも ID が含まれることはありません
get は path を指定してデータを取得します
path 配下にあるオブジェクトに対して絞り込みを行いたい場合はクエリを使います
https://firebase.google.com/docs/reference/android/com/google/firebase/database/Query
例えば上位 10 件のみを取得したい場合は limit を使います
あとは update と delete ですが、これも path で取得したオブジェクト配下の情報を削除したり更新したりします
update に関しては上書き更新なのでデータが新規で登録されるということはありません
delete に関しては物理削除なので、一度削除したオブジェクトは再度戻すことはできません
最後に
firebase-ruby が用意している関数の挙動を確認してみました
個人的には push ではなく set を使ってデータ登録したほうが毎回 ID を走査しなくて済むので簡単かなと思います
あとは get, update, delete を使って登録したデータを path を指定して操作する感じかなと思います
Firebase のデータベース機能はリアルタイムデータベースなので push や set で登録したときのアプリ側の挙動も確認したいと思っています
また Firebase には他にもストレージやホスティング機能、スクリプト機能があるのですが、firebase-ruby ではデータベース機能に対する制御しかできません
ストレージなどを使いたい場合は直接 Google Storege を操作する感じになるみたいです
0 件のコメント:
コメントを投稿