1
2

More than 3 years have passed since last update.

NCMB(Nifty Cloud Mobile Backend)データストアの基本操作チートシート(JavaScript SDK)

Last updated at Posted at 2020-09-05

自分なりにまとめてみました。足りないものは随時更新。

使用するための準備

SDKの入手やセットアップは下記リンクを参考に。
https://mbaas.nifcloud.com/doc/current/introduction/sdkdownload_javascript.html#gsc.tab=0

var ncmb = new NCMB("ApplicationKey", "ClientKey");

レコードの取得(Select)

1レコードだけの取得の場合

let object = ncmb.DataStore("DataStoreClassName");

object.equalTo("objectId", value)
      .fetch()
      .then(function(result){
          // 取得時処理
      }).catch(function(err){
          // 取得エラー処理
      });

複数レコード取得の場合

let objects = ncmb.DataStore("DataStoreClassName");

objects.equalTo("fieldName", value)
       .fetchAll()
       .then(function(result){
           // 取得時処理
       }).catch(function(err){
           // 取得エラー処理
       });

件数取得(結果の総数を取得)

let objects = ncmb.DataStore("DataStoreClassName");

objects.equalTo("fieldName", value)
       .count()
       .fetchAll()
       .then(function(result){
           // 取得時処理
       }).catch(function(err){
           // 取得エラー処理
       });

主に検索で使用するクエリ(その他は共通クエリオペレータを参照)

// 取得最大件数の指定(1~1,000件の範囲での指定のみ)
.limit(limitValue)

// 検索結果の開始位置指定(0番目からカウントしてvalue番目以降を取得)
.skip(value)

// 昇順ソート
.order("fieldName")
.order("fieldName", false)

// 降順ソート
.order("fieldName", true)

// 複数ソート ※先に指定したキーが優先
.order("fieldName1", true).order("fieldName2")

レコードの挿入(Insert)

各fieldNameとvalueをセットして挿入。

let object = new ( ncmb.DataStore("DataStoreClassName") );

object.set("fieldName", value)
      .fetch()
      .then(function(insertObject){
          insertObject.set("fieldName", value)
                      .save()
                      .then(function(result){
                          // 挿入完了時処理
                      }).catch(function(err){
                          // 挿入エラー処理
                      });
      });

レコードの更新(Update)

objectIdが一致するレコードに対し、セットしたフィールドを更新。

let object = ncmb.DataStore("DataStoreClassName");

object.equalTo("objectId", objectId)
      .fetch()
      .then(function(updateObject){
          updateObject.set("fieldName", value)
                      .update()
                      .then(function(result){
                        // 更新完了時処理
                      }).catch(function(err){
                        // 更新エラー処理
                      });
      });

レコードの削除(Delete)

objectIdが一致するレコードを削除。

let object = ncmb.DataStore("DataStoreClassName");

object.equalTo("objectId", objectId)
      .fetch()
      .then(function(deleteObject){
          deleteObject.delete()
                      .then(function(result){
                          // 削除完了時処理
                      }).catch(function(err){
                          // 削除エラー処理
                      });
      });

共通クエリオペレータ

文字列・数値・真偽値等で使用

// fieldValue === value
.equalTo("fieldName", value)

// fieldValue !== value
.notEqualTo("fieldName", value)

// fieldValue > value
.greaterThan("fieldName", value)

// fieldValue >= value
.greaterThanOrEqualTo("fieldName", value)

// fieldValue < value
.lessThan("fieldName", value)

// fieldValue <= value
.lessThanOrEqualTo("fieldName", value)


// 部分一致 ( fieldValue LIKE %value% )
.regularExpressionTo("fieldName", ".*" + value + ".*$")


// (fieldValue === value1) || (fieldValue === value2) || (fieldValue === value3)
.in("fieldName", [value1, value2, value3])

// (fieldValue !== value1) && (fieldValue !== value2) && (fieldValue !== value3)
.notIn("fieldName", [value1, value2, value3])

// fieldValue != null
.exists("colName")

配列で使用

// value のいずれかと一致
.equalTo("arrayFieldName", value)

// arrayValue の値の内、いずれかを含む
.inArray("arrayFieldName", arrayValue)

// arrayValue の値の内、いずれとも一致しない
.notInArray("arrayFieldName", arrayValue)

// arrayValue の値の内、全てが一致
.allInArray("arrayFieldName", arrayValue)

クエリの合成

AND合成

各メソッドを続けて記述すればOK。

let object= ncmb.DataStore("DataStoreClassName");
object.lessThan("fieldName1", value1)
      .equalTo("fieldName2", value2)
      .fetchAll()
      .then(function(results){
          // 取得時処理
      }).catch(function(err){
          // エラー時処理
      });

OR合成

orメソッドで合成。ただしorメソッドを複数使用して複雑なクエリを作ることはできないので注意。

let object= ncmb.DataStore("DataStoreClassName");
let query1 = object.lessThan("fieldName1", value1);
let query2 = object.equalTo("fieldName2", value2);
let query = [ query1 , query2 ];

object.or([])
      .fetchAll()
      .then(function(results){
          // 取得時処理
      }).catch(function(err){
          // エラー時処理
      });

おまけ

自動でセットされるcreateDate/updateDate(timestamp)をDateに変換

let objects = ncmb.DataStore("DataStoreClassName");
objects.equalTo("fieldName", value)
       .fetchAll()
       .then(function(result){
           for(let i=0; i < result.length; i++){
               let date = new Date( result[i].createDate );
               console.log(date);
           }
       }).catch(function(err){
           // 取得エラー処理
       });
1
2
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
1
2