外部依存関係は、自分で実装できない、または実装したくないコードを含むライブラリです。 たとえば、外部サービスには公式のライブラリを使用したり、データ構造やアルゴリズムのカスタム実装を使用したりできます。
Atlas は依存関係を自動的に変換し、ほとんどの組み込みNode.jsモジュールもサポートします。
注意
独自のモジュールを作成
ほとんどのnpmモジュールはサードパーティによって記述されていますが、アプリケーション固有のロジックを格納するために独自のnpmモジュールを作成して公開することもできます。モジュールをNode.js Community で使用できるようにしたり、プライベート使用のために予約したりすることもできます。詳細については、「 レジストリへのパッケージの変換 に関する npm のガイド 」を参照してください。
外部パッケージを追加する
To import and use an external dependency, you first need to add the dependency to your application. You can either add packages by name or upload a directory of dependencies.
重要
既存の依存関係の上書き
アプリが使用できる外部パッケージを指定するには、一度に 1 つの方法のみを使用できます。 依存関係を指定するために使用した最新の方法は真実のソースであり、以前の指定を上書きします。
たとえば、UI を介して名前を追加したパッケージは、アップロードされた依存関係ディレクトリにあるパッケージを含め、以前に追加した同じパッケージのコピーを上書きします。
名前とバージョンでパッケージを追加
名前を使用してnpmレジストリからアプリにパッケージを追加できます。特定のバージョンを追加するか、最新バージョンを使用できます。
Atlas で、プロジェクトの Triggers ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Streaming Data見出しの下のTriggersをクリックします。
Triggersページが表示されます。
依存関係ディレクトリのアップロード
圧縮されたnode_modulesディレクトリのパッケージをアプリにアップロードできます。 圧縮された依存関係ディレクトリは 15 MB を超えることはできません。
重要
既存の依存関係の上書き
アーカイブをインポートすると、既存の依存関係がすべて削除されます。
外部依存関係をローカルにインストール
外部依存関係をアップロードするには、まず少なくとも 1 つの Node.js パッケージを含むローカルnode_modulesフォルダーが必要です。 次のコード スニペットを使用して、アップロードする依存関係をローカルにインストールできます。
npm install <package name>
node_modulesフォルダがまだ存在しない場合、このコマンドはそれを自動的に作成します。
注意
インストールの代替方法
また、 package.jsonを構成し、 npm installコマンドを実行して、 package.jsonにリストされているすべてのパッケージ(およびその依存関係)をインストールすることもできます。
npmと node_modules の詳細については、npmドキュメント を参照してください。
Atlas で、プロジェクトの Triggers ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Streaming Data見出しの下のTriggersをクリックします。
Triggersページが表示されます。
依存関係アーカイブのアップロード
Dependencies タブを選択します。
[Upload Folder] をクリックします。
[] モーダルで、[
node_modules.tar.gzUpload Folder ] をクリックし、作成した [] アーカイブを選択します。Add をクリックします。Atlas がアーカイブ ファイルをアップロードします。インターネット接続の速度および依存関係アーカイブのサイズによっては数分かかる場合があります。
Atlas は、操作の成功または失敗を示すバナーを表示します。 成功した場合、 Dependenciesタブには依存関係アーカイブに含めた依存関係のリストが表示されます。
配置案が有効になっている場合は、これらの変更を適用するためにReview & Deployもクリックする必要があります。
配置案が無効になっている場合、依存関係アーカイブのサイズに応じて、 5から60秒以内に変更が有効になります。
関数内のパッケージをインポートする
アプリに追加した組み込みモジュールと外部パッケージをインポートし、関数で使用できます。 パッケージをインポートするには、関数本体内からパッケージ名を指定してrequire()を呼び出します。
重要
モジュールをインポートするには
Node.jsプロジェクトは通常、各ファイルのグローバル スコープにrequire()呼び出しを配置しますが、Atlas はこのパターンをサポートしていません。 関数のスコープ内でrequire()呼び出しを配置する必要があります。
完全なモジュールをインポート
exports = () => { const R = require("ramda"); return R.map(x => x*2, [1,2,3]); }
モジュール サブフォルダーのインポート
exports = function(arg){ const cloneDeep = require("lodash/cloneDeep"); var original = { name: "Deep" }; var copy = cloneDeep(original); copy.name = "John"; console.log(`original: ${original.name}`); console.log(`copy: ${copy.name}`); return (original != copy); };
例
次の例では、 lodash 依存関係を使用して Atlas Triggers 関数を作成しています。
Atlas で、プロジェクトの Triggers ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Streaming Data見出しの下のTriggersをクリックします。
Triggersページが表示されます。
新しい trigger パラメーターを定義します。
Triggersページで、 Add Triggerをクリックします。
Trigger Details ペインで、値を追加します。
設定 | 値 |
|---|---|
trigger タイプ |
|
監視 |
|
クラスター名 | Atlas クラスターの名前。 |
databaseName | trigger を実行するデータベースの名前。 |
コレクション名 | trigger を実行するコレクションの名前。 |
操作タイプ |
|
完全な文書 | disabled |
ドキュメントの変更前のイメージ | disabled |
新しい trigger 関数を定義します。
Function ペインで、次のコードを貼り付けます。
exports = async function(changeEvent) { const _ = require('lodash'); const temp = ['a', 'b', 'c']; const result = _.filter(temp, (val) => val === 'a'); console.log("result: ", result); return result; };
関数を実行するには、Run をクリックします。タイムスタンプと実行時間の後、出力は次のようになります。
> logs: result: a > result: [ "a" ] > result (JavaScript): EJSON.parse('["a"]')