NCMBはモバイル向けのBaaS(mobile Backend as a Service)ですが、サーバー側のデータとNCMB上のデータを連係させたいというニーズは良くあります。
そんなときには各言語向けのSDKがあると便利です。サーバー向けにはRuby、Python、PHP、Java、C#のSDKがあります(すべて公式サポート対象外の、コミュニティSDKという位置づけです)。
新しくGo言語向けのSDK開発をはじめたので、その使い方を紹介します。今回はロール(グループ)のCRUD操作について解説します。
ソースコード
ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseになります。
インストール
SDKのインストールは下記コマンドで行います。
go get -u github.com/NCMBMania/ncmb_go
インポート
続けてSDKをインポートします。
import (
"github.com/NCMBMania/ncmb_go"
)
初期化
NCMBより取得したアプリケーションキー、クライアントキーを使って初期化します。
ncmb := NCMB.Initialize("YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY")
ロールの新規作成
Role メソッドで新規データのインスタンスを作ります。引数はロール名です。
role := ncmb.Role("Admin")
bol, err := role.Save()
if err != nil {
t.Errorf("Error: %s", err)
}
if bol == false {
t.Errorf("Error: %s", err)
}
ロールに子ロールを追加する
ロールは階層構造にできます。 AddRole
でロールを追加できます。
role1 := ncmb.Role("TestRole1")
if _, err := role1.Save(); err != nil {
t.Errorf("Error: %s", err)
}
role2 := ncmb.Role("TestRole2")
if _, err := role2.Save(); err != nil {
t.Errorf("Error: %s", err)
}
role3 := ncmb.Role("TestRole3")
if _, err := role3.Save(); err != nil {
t.Errorf("Error: %s", err)
}
role1.AddRole(role2)
role1.AddRole(role3)
bol, err := role1.Save()
子ロールから削除する
逆に削除する場合には RemoveRole
を使います。なお、追加と削除を同時にはできません。
role1.RemoveRole(role2)
bol, err := role1.Save()
ロールにユーザーを所属させる
ユーザーを特定のロールに紐付ける場合には AddUser
を使います。
role1 := ncmb.Role("TestRole1")
if _, err := role1.Save(); err != nil {
t.Errorf("Error: %s", err)
}
userName, password := "roleGo", "roleGo"
user, err := ncmb.SignUpByAccount(userName, password)
role1.AddUser(*user)
if bol, err := role1.Save(); err != nil {
t.Errorf("Error: %s, %T", err, bol)
role1.Delete()
user.Delete()
}
子ロールを取得する
ロールに紐付く子ロールを取得する際には FetchRole
を使います。
roles, err := role1.FetchRole()
if err != nil {
t.Errorf("Error: %s", err)
}
ロールに所属するユーザー一覧を取得する
ロールに所属するユーザー一覧は FetchUser
で取得できます。
users, err := role1.FetchUser()
if err != nil {
t.Errorf("Error: %s", err)
}
ロールの更新
ロールの更新は新規作成と同じく Save
メソッドで行います。
role := ncmb.Role("TestRole1")
role.Save()
roleName := "TestRole2"
role.Set("roleName", roleName)
bol, err := role.Save()
if err != nil {
t.Errorf("Error: %s", err)
}
ロールの削除
ロールの削除は Delete
メソッドで行います。
role.Delete()
ロールの検索
ロールを検索する際には Query
メソッドを使います。引数は roles
としてください。
query := ncmb.Query("roles")
query.EqualTo("roleName", "Admin")
ary, err := query.FetchAll()
if err != nil {
t.Error(err)
}
まとめ
まだ基本的な機能しかありませんが、徐々にバージョンアップしていきます。
Go言語を使ってWebアプリケーションを開発している方は、そのデータ保存先としてNCMBを利用してみてください。