サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >SDKガイド(JavaScript):オブジェクト操作

SDKガイド(JavaScript)

オブジェクト操作

このドキュメントは更新されていません。
こちらから最新版をご覧ください。

クラスの定義

NCMB.DataStoreのサブクラスを生成して、オブジェクトのクラスを定義します。
指定したクラスがデータストアに存在しない場合は、新規にクラスが作成されます。

※ role, file, push, user, installation などは標準クラスとして使用されているので、新規クラス作成時にはクラス名にセットできません。

var ncmb = new NCMB(apikey, clientkey);

// NCMB.Objectのサブクラスを生成
var GameScore = ncmb.DataStore("GameScore");

// クラスの新しいインスタンスを生成
var gameScore = new GameScore();

プロパティ

データストア操作に関する主要規定フィールドは以下の通りです。

// acl:        アクセス権限
// objectId:   オブジェクトのユニークID(save時に付加)
// createDate: オブジェクトの初回保存日時(save時に付加)
// updateDate: オブジェクトの最新更新日時(update時に付加)

オブジェクトの保存

オブジェクトの中身をデータストアに保存する場合は、saveメソッドを利用します。

var GameScore = ncmb.DataStore("GameScore");
var gameScore = new GameScore();

gameScore.set("score", 1337)
         .set("playerName", "Taro")
         .set("cheatMode", false)
         .save()
         .then(function(gameScore){
          // 保存後の処理
         })
         .catch(function(err){
           // エラー処理
         });

オブジェクトの取得

オブジェクトをデータストアから取得するには、fetchAllメソッドを利用します。
検索条件を設定することもできます。詳しくはクエリの使い方を参照してください。

var GameScore = ncmb.DataStore("GameScore");
GameScore.fetchAll()
         .then(function(results){
            for (var i = 0; i < results.length; i++) {
              var object = results[i];
              console.log(object.score + " - " + object.get("playerName"));
            }
          })
         .catch(function(err){
            console.log(err);
          });

オブジェクトの更新

保存したオブジェクトの値を更新するには、updateメソッドを実行します。

var GameScore = ncmb.DataStore("GameScore");
var gameScore = new GameScore();

gameScore.set("score", 1337)
         .set("cheatMode", false)
         .save()
         .then(function(gameScore){
           gameScore.set("cheatMode", true);
           return gameScore.update();
         })
         .then(function(gameScore){
           // 更新後の処理
          })
         .catch(function(err){
           // エラー処理
         });

更新オペレーションを利用することで、手元で直接上書きすることなく、
保存されている値を変更できます。
※これらのオペレーション設定後にupdateを実行する必要があります。

// 値をインクリメントする
gameScore.setIncrement("level", 1);

// 配列に値を追加する
gameScore.add("skills", "flying");

// 配列内で重複しなければ追加
gameScore.addUnique("skills", "kungfu");

// 配列から削除
gameScore.remove("skills", "flying");

オブジェクトの削除

deleteメソッドを利用して、オブジェクトを削除します。

gameScore.delete()
         .then(function(result){
           console.log(result); // true
          })
         .catch(function(err){
           // エラー処理
          });

フィールドを削除する場合は値にnullを入力して更新します。

gameScore.set("playerName", null);
         .save();

関連オブジェクト

あるオブジェクトのプロパティにほかのオブジェクトをセットすることで、それらを関連づけることができます。
方法はポインタとリレーションの二通りがあります。

ポインタ

オブジェクトのプロパティにほかのオブジェクトを直接入力した場合、保存時にそのオブジェクトへのポインタが設定されます。
未保存のオブジェクトを入力して保存した場合、入力されたオブジェクトもまとめて保存されます。(APIリクエスト数はオブジェクト数分消費されます。)

データストアから取得する場合のポインタの扱い方についてはクエリの使い方を参照してください。

var Food = ncmb.DataStore("food");
var food = new Food({name: "orange"});
var Component = ncmb.DataStore("Component");
var component = new Component({calorie: "50"});
food.set("component", component);

// foodと共にcomponentも保存される
food.save()
    .then(function(food){
      // 保存後処理
    })
    .catch(function(err){
      // エラー処理
    });

リレーション

ポインタとしてほかのオブジェクトを関連づける以外にも、リレーションを利用した方法があります。
リレーションを用いることで、複数のオブジェクトをまとめてプロパティに関連づけることができます。
未保存のオブジェクトをリレーションに追加して保存した場合、入力されたオブジェクトもまとめて保存されます。(APIリクエスト数はオブジェクト数分消費されます。)

データストアから取得する場合のリレーションの扱い方についてはクエリの使い方を参照してください。

// リレーションに追加するオブジェクトを作成
var Food = ncmb.DataStore("food");
var food1 = new Food({name: "orange", type: "fruit"});
var food2 = new Food({name: "apple", type: "fruit"});

// リレーションを作成してオブジェクトを追加
var relation = new ncmb.Relation();
relation.add(food1).add(food2);

var MainObj = ncmb.DataStore("MainObj");
var mainobj = new MainObj();

// リレーションをプロパティに追加
mainobj.set("foods", relation);

// 保存(リレーションに追加されたオブジェクトも同時に保存されます)
mainobj.save()
       .then(function(obj){
         // 保存後処理
       })
       .catch(function(err){
         // エラー処理
       });
});

データタイプ

基本的なデータの型。JSONにシリアライズして送信されます。オブジェクトに数字から配列まで色々データタイプに対応しています。

var number = 42;
var string = "the number is " + number;
var date = new Date(1999, 11, 31, 23, 59, 59, 999);
var array = [string, number];
var object = { number: number, string: string };

var BigObject = ncmb.DataStore("BigObject");
var bigObject = new BigObject();
bigObject.set("myNumber", number);
bigObject.set("myString", string);
bigObject.set("myDate", date);
bigObject.set("myArray", array);
bigObject.set("myObject", object);
bigObject.set("myNull", null);
bigObject.save();

オブジェクトのACL設定

オブジェクトにACLを設定するには、Aclクラスを使用します。

var acl = new ncmb.Acl();
acl.setRoleReadAccess("Private", true) // Privateロールの読み込みを許可
   .setPublicReadAccess(false); // 全体の読み込みを拒否

var Note = ncmb.DataStore("Note");
var privateNote = new Note();
privateNote.set("content", "This note is private!");

// aclを設定
privateNote.set("acl", acl);
privateNote.save();

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ