0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go言語向けNCMB SDKの使い方(ロールのCRUD操作)

Posted at

NCMBはモバイル向けのBaaS(mobile Backend as a Service)ですが、サーバー側のデータとNCMB上のデータを連係させたいというニーズは良くあります。

そんなときには各言語向けのSDKがあると便利です。サーバー向けにはRuby、Python、PHP、Java、C#のSDKがあります(すべて公式サポート対象外の、コミュニティSDKという位置づけです)。

新しくGo言語向けのSDK開発をはじめたので、その使い方を紹介します。今回はロール(グループ)のCRUD操作について解説します。

ソースコード

ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseになります。

NCMBMania/ncmb_go

インストール

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を利用してみてください。

mBaaSでサーバー開発不要! | ニフクラ mobile backend

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?