15. マイグレーションガイド¶
本章では、NEC BaaS JavaScript SDK の以前のバージョンからの API の変更点や移行方法について説明します。
15.1. ver 7.0.2 → 7.5.0 での変更点¶
15.2. ver 7.0.0 → 7.0.2 での変更点¶
15.2.1. 不具合修正¶
以下の不具合修正を行いました。
- Node.js で HttpRequest.setDefaultTimeout() の値がHTTPタイムアウトに設定されない
- Proxy CONNECT 時の Host ヘッダ設定誤り修正 (tunnel -> tunnel-fork モジュールに変更)
15.3. ver 6.5.2 → 6.5.4 での変更点¶
15.3.1. 不具合修正¶
以下の不具合修正を行いました。
- Node.js で HttpRequest.setDefaultTimeout() の値がHTTPタイムアウトに設定されない
- Proxy CONNECT 時の Host ヘッダ設定誤り修正 (tunnel -> tunnel-fork モジュールに変更)
15.4. ver 6.5.x → 7.0.0 での変更点¶
15.4.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.4.2. npmjs.com パッケージ公開¶
npmjs.com にて本 SDK をパッケージ公開しました。 "npm install" で npmjs.com から SDK のダウンロード・インストールが可能です。
15.5. ver 6.5.1 → 6.5.2 での変更点¶
15.6. ver 6.0.1 → 6.5.1 での変更点¶
15.6.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.6.2. TypeScript 対応強化¶
npm パッケージで JS SDK をインストールし、import 文でインポートできるようになりました。
手順については、 SDKセットアップ手順 を参照してください。
15.7. ver 6.0.1 → 6.5.0 での変更点¶
15.7.1. ES6 Promise 削除¶
baas.js 内に ES6 Promise モジュールが内包されなくなりました。 このため、Promise に対応していないブラウザの場合は、es6-promise モジュールを 別途ロードする必要があります。
詳細は、SDKセットアップ手順 を参照してください。
15.7.3. ObjectQuery¶
ObjectQuery に setSort / getSort メソッドが追加されました。 (旧API の setSortOrder, clearSortOrder, getSortOrder は Deprecated 扱いとなります)
15.9. ver 5.0.0 → 6.0.0 での変更点¶
15.9.1. Cloud Functions API¶
Nebula.CustomApi を使用して DELETE メソッドで API を呼び出す際の動作が変更されました。 データはボディ(JSON形式)ではなく、クエリパラメータで送信されます。
15.10. ver 4.1.0 → 5.0.0 での変更点¶
15.10.1. Cloud Functions API¶
Cloud Functions呼び出し用に Nebula.CustomApi クラスを追加しました。 詳細は Cloud Functions開発ガイド の「カスタムAPIの実行」の章を参照してください。
15.10.3. ロングクエリ対応¶
オブジェクトストレージのクエリ時に長いクエリ条件を使用する場合の API を追加しました。 (ObjectBucket.longQuery())。詳細はリファレンスを参照してください。
注釈
本機能を使用する場合は、モバイルバックエンド基盤サーバ v5.0.0 以上が必要です。
15.11. ver 4.0.1 → 4.1.0 での変更点¶
注意
ver 4.1.0 で、API に後方互換性のない変更が行われています。 このため、従来のコードに修正が必要になる場合がありますので、注意してください。
15.11.1. ES6 Promise 移行/jQuery.Deferred 廃止¶
jQuery.Deferred サポートは廃止となり、ES6 Promise に移行しました。 jQuery.Deferred を使用しているコードは修正が必要になります。
詳細は ES6 Promise を参照してください。
15.11.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.11.3. User.current() API の変更¶
User.current() API は非同期APIから同期APIに変更されました。 返り値で直接 current user を返却するようになります。
後方互換性維持のため、従来どおり callbacks 引数を指定した場合は、コールバックを呼び出します。
jQuery.Deferred を使用している場合は、 値を直接受け取るようにコードを修正する必要があります 。
15.11.4. Clause fluent API 対応¶
Nebula.Clause に fluent スタイルの API を追加しました。 複合条件を記述しやすくなっています。詳細は 論理演算 を参照してください。
15.11.5. Node.js 対応¶
Node.js に対応しました。
15.12. ver 4.0.0 → 4.0.1 での変更点¶
15.12.1. ユーザの所属グループ・オプション情報取得機能¶
ユーザが所属するグループおよびオプション情報を取得する機能を追加しました。
以下で得られる User に対して、get("groups") で所属グループ一覧を、 get("options")でオプション情報を取得できます。 ただし、オフライン API では使用できません。
- Nebula.User.current()
- Nebula.User.query() (ユーザID指定で検索した場合のみ)
- Nebula.User.update()
15.12.2. delete メソッドの名前変更¶
以下の delete() メソッドは、JavaScript の予約語と衝突するためすべて remove() メソッドにリネームされました。
- Nebula.User.delete()
- Nebula.Group.delete()
- Nebula.ObjectBucket.delete()
- NebuleFileBucket.delete()
互換性維持のため delete() メソッドも残してありますが、 Deprecated となり将来のバージョンでは削除となる予定です。
15.13. ver 3.0.0 → 4.0.0 での変更点¶
15.13.1. Push 送信 API の追加¶
Push 送信 API が追加されました。 詳細は Push 通知ガイド を参照ください。
15.13.2. オブジェクトストレージ¶
オブジェクトクエリ時の not 演算子をサポートしました。
15.13.3. 自己署名証明書対応¶
自己証明証明書を使用するサーバへの接続許可設定を初期化パラメータに追加しました。 詳細は 自己署名証明書を使用する場合の設定 を参照ください。
15.14. ver 1.2.0 → 3.0.0 での変更点¶
15.14.1. オフライン機能の改善¶
オブジェクトストレージのオフライン機能が大幅に変更されています。
オブジェクトバケットに、バケットモードが追加されました。 バケットモードには以下のモードがあります。
- オンラインモード: 常にサーバと通信するモードです。
- レプリカモード: 常にローカルキャッシュを読み書きするモードです。サーバとの通信は、同期時にのみ発生します。
- ローカルモード: 常にローカルキャッシュを読み書きするモードです。サーバとは同期しません。
15.14.2. オフラインバケットのインデックス機能の追加¶
オフラインバケット(レプリカモード)の検索を高速化するため、 オブジェクトに対しインデックスを設定できる API を追加しました。
15.14.3. 前回同期時刻の取得機能の追加¶
前回の同期時刻を取得できる API を追加しました。(レプリカモード時に使用)
15.14.4. プロジェクション機能の追加¶
プロジェクション関連の API を追加しました。 Nebula.ObjectQuery クラスの setProjection() メソッドで条件を指定できます。
15.14.5. ユーザ関連の API 強化¶
ユーザに任意の情報をオプションとして設定できるようになりました。 詳細は、APIリファレンス Nebula.User クラスの set() メソッドを参照ください。
user.set("options", "xxxxx");
ユーザ名に "@" を使用できるようになりました。
15.14.6. グループ情報更新時の楽観ロック¶
グループの更新時に、etag をリクエストパラメータにセットすることで、楽観ロックができるように 改善されています。(他ユーザによりグループ情報が更新された場合にデータの衝突を検出できます)
15.14.7. オブジェクトデータの null サポート¶
オブジェクトデータで以下のように null を値に持つオブジェクトをサポートしました。
{
"_id" : xxxxxxxx ,
"data" : null ,
"ACL" : {....}
}
15.14.8. インデックス・シャードキー関連¶
インデックスキー、シャードキー関連の API は削除されました。
15.14.9. オフライン関連¶
- 以下の API は削除されました。
- キャッシュポリシー関連の API
- ネットワークモード関連の API
- 自動同期関連の API
15.15. ver 1.1.0 → 1.2.0 での API 変更点¶
15.15.1. オブジェクトの検索(クエリ)¶
オブジェクト検索のコールバック成功時の引数として「検索条件に合致したオブジェクトの数」を追加しました。
15.15.2. オブジェクトの更新/削除時の楽観ロック¶
オブジェクトの更新/削除時に、etag をリクエストパラメータにセットすることで、楽観ロックができるように 改善されています。(他ユーザによりサーバ側のデータが更新された場合にデータの衝突を検出できます)
15.15.3. ファイルオフライン関連¶
ファイルオフライン関連の API は非サポートになりました。
15.16. ver 0.9.6 → 1.1.0 での API 変更点¶
変更なし