15. マイグレーションガイド

本章では、NEC BaaS JavaScript SDK の以前のバージョンからの API の変更点や移行方法について説明します。

15.1. ver 7.0.0 → 7.0.2 での変更点

15.1.1. 不具合修正

以下の不具合修正を行いました。

  • Node.js で HttpRequest.setDefaultTimeout() の値がHTTPタイムアウトに設定されない
  • Proxy CONNECT 時の Host ヘッダ設定誤り修正 (tunnel -> tunnel-fork モジュールに変更)

15.2. ver 6.5.2 → 6.5.4 での変更点

15.2.1. 不具合修正

以下の不具合修正を行いました。

  • Node.js で HttpRequest.setDefaultTimeout() の値がHTTPタイムアウトに設定されない
  • Proxy CONNECT 時の Host ヘッダ設定誤り修正 (tunnel -> tunnel-fork モジュールに変更)

15.3. ver 6.5.x → 7.0.0 での変更点

15.3.1. BREAKING CHANGES: Node.js パッケージ名変更

Node.js パッケージ名を "nebula" から "@nec-baas/jssdk" に変更しました。 これに伴い、require 文および import 文の修正が必要になります。

// v6.5 以前
const Nebula = require('nebula').Nebula;
// v7.0 以降
const Nebula = require('@nec-baas/jssdk').Nebula;

15.3.2. npmjs.com パッケージ公開

npmjs.com にて本 SDK をパッケージ公開しました。 "npm install" で npmjs.com から SDK のダウンロード・インストールが可能です。

15.3.3. MongoDB Aggregation 対応

MongoDB Aggregation に対応しました。 ObjectBucket.aggregate() メソッドを追加しています。

詳細は、オブジェクトの集計 を参照して下さい。

15.4. ver 6.5.1 → 6.5.2 での変更点

15.4.1. 不具合修正

以下の不具合修正を行いました。

  • CSPヘッダの設定次第で、SDK のロードがエラーになる場合がある (CSPポリシにより eval が実行エラーとなる)

15.5. ver 6.0.1 → 6.5.1 での変更点

15.5.1. Node.js require 手順の変更

Node.js で JavaScript を require でロードする手順が変更となりました。 v6.5.1 以降は、以下のように require の後ろに '.Nebula' を付加する必要があります。

// v6.5.0以前
const Nebula = require('nebula');
// v6.5.1以降
const Nebula = require('nebula').Nebula;

これは TypeScript における ES2015 import 構文への対応のための変更です。

詳細は SDKセットアップ手順 を参照してください。

注意

v6.5.0 以前のコードは、上記に合わせて変更が必要です。

15.5.2. TypeScript 対応強化

npm パッケージで JS SDK をインストールし、import 文でインポートできるようになりました。

手順については、 SDKセットアップ手順 を参照してください。

15.6. ver 6.0.1 → 6.5.0 での変更点

15.6.1. ES6 Promise 削除

baas.js 内に ES6 Promise モジュールが内包されなくなりました。 このため、Promise に対応していないブラウザの場合は、es6-promise モジュールを 別途ロードする必要があります。

詳細は、SDKセットアップ手順 を参照してください。

15.6.2. API Gateway

レスポンスヘッダを受信するための API を追加しました。

詳細は API Gateway を参照してください。

15.6.3. ObjectQuery

ObjectQuery に setSort / getSort メソッドが追加されました。 (旧API の setSortOrder, clearSortOrder, getSortOrder は Deprecated 扱いとなります)

15.6.4. クライアント証明書認証

クライアント証明書認証に対応しました。(node.js)

NebulaService#setClinetCertificate を使用してクライアント証明書の設定が可能です。 対応するサーバとのhttps通信時に、ログインを行わなくともユーザ権限が付与された状態でアクセスできます。

詳細は ユーザ管理 を参照してください。

15.6.5. OpenID Connect認証対応

OpenID Connect リンク情報取得/リンク情報削除 API を追加しました。

詳細は ユーザ管理 を参照してください。

15.7. ver 6.0.0 → 6.0.1 での変更点

下記の不具合を修正しました。

  • Node.js アプリケーションで JavaScript ライブラリのロードができない

15.8. ver 5.0.0 → 6.0.0 での変更点

15.8.1. Cloud Functions API

Nebula.CustomApi を使用して DELETE メソッドで API を呼び出す際の動作が変更されました。 データはボディ(JSON形式)ではなく、クエリパラメータで送信されます。

15.9. ver 4.1.0 → 5.0.0 での変更点

15.9.1. Cloud Functions API

Cloud Functions呼び出し用に Nebula.CustomApi クラスを追加しました。 詳細は Cloud Functions開発ガイド の「カスタムAPIの実行」の章を参照してください。

15.9.2. マルチテナント対応

1つのプロセスから複数のテナント/アプリに同時接続する機能を追加しました。 詳細は マルチテナント を参照してください。

15.9.3. ロングクエリ対応

オブジェクトストレージのクエリ時に長いクエリ条件を使用する場合の API を追加しました。 (ObjectBucket.longQuery())。詳細はリファレンスを参照してください。

注釈

本機能を使用する場合は、モバイルバックエンド基盤サーバ v5.0.0 以上が必要です。

15.9.4. ユーザクエリ

ユーザ検索時に skip/limit 条件を指定できるようにしました。

注釈

本機能を使用する場合は、モバイルバックエンド基盤サーバ v5.0.0 以上が必要です。

15.10. ver 4.0.1 → 4.1.0 での変更点

注意

ver 4.1.0 で、API に後方互換性のない変更が行われています。 このため、従来のコードに修正が必要になる場合がありますので、注意してください。

15.10.1. ES6 Promise 移行/jQuery.Deferred 廃止

jQuery.Deferred サポートは廃止となり、ES6 Promise に移行しました。 jQuery.Deferred を使用しているコードは修正が必要になります。

詳細は ES6 Promise を参照してください。

15.10.2. API 変更(コールバック引数変更)

ES6 Promise 対応に伴い、API コールバック(success, error) の引数の数を1個に統一しました。 このため、いくつかの API について後方互換性のない変更が行われています。

これらの API を使用している箇所については、コードの修正が必要となります。 詳細は以下のとおりです。

ObjectBucket.query()

ObjectBucket の query() API は以下2つの API に分割されました。 詳細は オブジェクトストレージ:クエリ を参照してください。

  • query() : 通常クエリ (ヒット件数取得なし)
  • queryWithCount() : ヒット件数取得つきクエリ

query() については、success コールバック引数の個数は1個のみとなり、 検索結果の配列が渡されます。

queryWithCount() については、success コールバック引数は1個のみとなり、 結果は以下のオブジェクトとして渡されます。

{
    objects: 検索結果の配列,
    count: ヒット件数
}

また、これにともない、ObjectQuery.setCountQuery() は廃止となります。

エラーコールバック引数変更

以下の API について、error コールバックの引数個数が変更(2→1)となります。

具体的には、第1引数が削除され第2引数 (err) のみが渡されます。 従来の第1引数の値は、err.data プロパティに格納されます。

  • ObjectBucket.delete()
  • ObjectBucket.deleteBucket()
  • ObjectBucket.load()
  • ObjectBucket.loadBucket()
  • ObjectBucket.remove()
  • ObjectBucket.save()
  • ObjectBucket.saveBucket()
  • FileBucket.delete()
  • FileBucket.dlownloadFile()
  • FileBucket.getMetadata()
  • FileBucket.load()
  • FileBucket.loadBucket()
  • FileBucket.publish()
  • FileBucket.remove()
  • FileBucket.save()
  • FileBucket.saveAs()
  • FileBucket.saveBucket()
  • FileBucket.unpublish()
  • FileBucket.updateMetadata()
  • FileBucket.uploadNewFile()
  • FileBucket.uploadUpdateFile()

15.10.3. User.current() API の変更

User.current() API は非同期APIから同期APIに変更されました。 返り値で直接 current user を返却するようになります。

後方互換性維持のため、従来どおり callbacks 引数を指定した場合は、コールバックを呼び出します。

jQuery.Deferred を使用している場合は、 値を直接受け取るようにコードを修正する必要があります

15.10.4. Clause fluent API 対応

Nebula.Clause に fluent スタイルの API を追加しました。 複合条件を記述しやすくなっています。詳細は 論理演算 を参照してください。

15.10.5. Node.js 対応

Node.js に対応しました。

15.11. ver 4.0.0 → 4.0.1 での変更点

15.11.1. ユーザの所属グループ・オプション情報取得機能

ユーザが所属するグループおよびオプション情報を取得する機能を追加しました。

以下で得られる User に対して、get("groups") で所属グループ一覧を、 get("options")でオプション情報を取得できます。 ただし、オフライン API では使用できません。

  • Nebula.User.current()
  • Nebula.User.query() (ユーザID指定で検索した場合のみ)
  • Nebula.User.update()

15.11.2. delete メソッドの名前変更

以下の delete() メソッドは、JavaScript の予約語と衝突するためすべて remove() メソッドにリネームされました。

  • Nebula.User.delete()
  • Nebula.Group.delete()
  • Nebula.ObjectBucket.delete()
  • NebuleFileBucket.delete()

互換性維持のため delete() メソッドも残してありますが、 Deprecated となり将来のバージョンでは削除となる予定です。

15.12. ver 3.0.0 → 4.0.0 での変更点

15.12.1. Push 送信 API の追加

Push 送信 API が追加されました。 詳細は Push 通知ガイド を参照ください。

15.12.2. オブジェクトストレージ

オブジェクトクエリ時の not 演算子をサポートしました。

15.12.3. 自己署名証明書対応

自己証明証明書を使用するサーバへの接続許可設定を初期化パラメータに追加しました。 詳細は 自己署名証明書を使用する場合の設定 を参照ください。

15.13. ver 1.2.0 → 3.0.0 での変更点

15.13.1. オフライン機能の改善

オブジェクトストレージのオフライン機能が大幅に変更されています。

オブジェクトバケットに、バケットモードが追加されました。 バケットモードには以下のモードがあります。

  • オンラインモード: 常にサーバと通信するモードです。
  • レプリカモード: 常にローカルキャッシュを読み書きするモードです。サーバとの通信は、同期時にのみ発生します。
  • ローカルモード: 常にローカルキャッシュを読み書きするモードです。サーバとは同期しません。

15.13.2. オフラインバケットのインデックス機能の追加

オフラインバケット(レプリカモード)の検索を高速化するため、 オブジェクトに対しインデックスを設定できる API を追加しました。

15.13.3. 前回同期時刻の取得機能の追加

前回の同期時刻を取得できる API を追加しました。(レプリカモード時に使用)

15.13.4. プロジェクション機能の追加

プロジェクション関連の API を追加しました。 Nebula.ObjectQuery クラスの setProjection() メソッドで条件を指定できます。

15.13.5. ユーザ関連の API 強化

ユーザに任意の情報をオプションとして設定できるようになりました。 詳細は、APIリファレンス Nebula.User クラスの set() メソッドを参照ください。

user.set("options", "xxxxx");

ユーザ名に "@" を使用できるようになりました。

15.13.6. グループ情報更新時の楽観ロック

グループの更新時に、etag をリクエストパラメータにセットすることで、楽観ロックができるように 改善されています。(他ユーザによりグループ情報が更新された場合にデータの衝突を検出できます)

15.13.7. オブジェクトデータの null サポート

オブジェクトデータで以下のように null を値に持つオブジェクトをサポートしました。

{
    "_id" : xxxxxxxx ,
    "data" : null ,
    "ACL" : {....}
}

15.13.8. インデックス・シャードキー関連

インデックスキー、シャードキー関連の API は削除されました。

15.13.9. オフライン関連

以下の API は削除されました。
  • キャッシュポリシー関連の API
  • ネットワークモード関連の API
  • 自動同期関連の API

15.14. ver 1.1.0 → 1.2.0 での API 変更点

15.14.1. オブジェクトの検索(クエリ)

オブジェクト検索のコールバック成功時の引数として「検索条件に合致したオブジェクトの数」を追加しました。

15.14.2. オブジェクトの更新/削除時の楽観ロック

オブジェクトの更新/削除時に、etag をリクエストパラメータにセットすることで、楽観ロックができるように 改善されています。(他ユーザによりサーバ側のデータが更新された場合にデータの衝突を検出できます)

15.14.3. ファイルオフライン関連

ファイルオフライン関連の API は非サポートになりました。

15.15. ver 0.9.6 → 1.1.0 での API 変更点

変更なし