NerdStorage は、New Relic 内でアクセス可能なドキュメント データベースです。 セッション間でドキュメントを変更、保存、取得することができます。
NerdStorage を使用すると、最大 64 KB の個別のドキュメントを作成したり、さまざまなドキュメント コレクションを作成したり、エンティティ、アカウント、またはユーザー レベルごとにデータを保存したりできます。
このガイドでは、NerdStorage にデータとドキュメントを追加する方法について説明します。
あなたが始める前に
このガイドでは、API キーとNew Relic One CLI が必要です。
始めましょう
まず、NerdStorage アプリを New Relic 内で正常に実行します。
GitHub リポジトリからサンプルアプリケーションをクローンします。
New Relic One CLI を使用してアプリケーション UUID を更新し、アプリケーションをローカルで実行します。
ターミナルで、
/nr1-how-to/use-nerdstorage
ディレクトリに切り替えます。bash$cd /nr1-how-to/use-nerdstorageUUID を更新してアプリケーションを提供します。
bash$nr1 update$nr1 nerdpack:uuid -gf$nr1 nerdpack:serve
アプリが正常に提供されると、ターミナルはNew Relicで実行中のアプリケーションを表示するための URL を返します。
URL を読み込みます。 Apps [アプリ]をクリックすると、 Your apps [あなたのアプリ]の下にUse Nerdstorage [Nerdstorage を使用する]アプリがリストされます。 クリックしてアプリをリリースします。
NerdStorageにデータを追加する
アプリが New Relic 上で起動したら、アプリを準備してデータの追加を開始できます。
How To Use NerdStorage [NerdStorage アプリの使用方法]画面には、データを追加するためのフィールドがあるSaved to NerdStorage [NerdStorage に保存]ペインがあります。 ただし、何かを入力するとエラーメッセージが表示されます。 これは、 User
レベルでデータを保存するように設定する必要があるためです。 これは、 UserStorageMutation
コンポーネントの助けを借りて実行できます。
任意のテキスト エディターでアプリケーションの./nerdlets/use-nerdstorage-nerdlet/index.js
ファイルを開き、データの入力に使用されるTextField
とButton
のコードを見つけます。 Button onClick
プロパティは_addToNerdStorage
と呼ばれるヘルパーメソッドを呼び出します。これを更新して、 UserStorageMutation
UserStorage
NerdStorage コンポーネントにはcollection
とdocumentId
必要です。 アプリケーションのindex.js
ファイル内のコンストラクター メソッドでは、提供されている変数を確認できます。 .js
ファイルでは、次のようになります。
constructor(props) { super(props) this.collectionId = 'mycollection'; this.documentId = 'learning-nerdstorage'; this.state = { isOpen: true, storage: [], text: '', }; this._addToNerdStorage = this._addToNerdStorage.bind(this); this._removeFromNerdStorage = this._removeFromNerdStorage.bind(this); this._deleteDocument = this._deleteDocument.bind(this);}
index.js
ファイルの先頭にあるimport
ステートメントにUserStorageMutation
を追加してインポートします。
import { UserStorageMutation } from 'nr1';
次に、 _addToNerdStorage
で始まる次のコードでヘルパーを更新します。
_addToNerdStorage(){ const { text, storage } = this.state; storage.push(text); this.setState({storage}, () => { UserStorageMutation.mutate({ actionType: UserStorageMutation.ACTION_TYPE.WRITE_DOCUMENT, collection: this.collectionId, documentId: this.documentId, document: { storage }, }) .then((res) => { this.setState({text: ''}); Toast.showToast({ title: "NerdStorage Update.", type: Toast.TYPE.NORMAL }); }) .catch((err) => console.log(err)); });}
- New Relic で実行中のHow To Use NerdStorage [NerdStorage アプリの使用方法]画面に戻り、ページを再読み込みします。
- テキスト入力フィールドにテキストを追加し、チェックボタンをクリックします。 これにより、NerdStorage が更新され、アプリ内で
Toast
通知がトリガーされます。 すると、入力したテキストがテキスト入力フィールドの下のテーブル行として表示されます。
NerdStorageからデータをクエリする
上のセクションで説明したようにデータ ストレージが機能するようになったら、アプリが NerdStorage からデータを適切に読み取れるようにする必要があります。そうしないと、アプリ ページから移動して戻るたびに、アプリが空の状態で再読み込みされます。 これを行うには、 UserStorageQuery
コンポーネントを追加し、 componentDidMount
メソッドを更新します。
アプリケーションの./nerdlets/use-nerdstorage-nerdlet/index.js
ファイル内のインポート ステートメントにUserStorageQuery
を追加してインポートします。
import { UserStorageMutation, UserStorageQuery } from 'nr1';
次に、次のcomponentDidMount
メソッドをアプリケーションに追加します。
componentDidMount(){ UserStorageQuery.query({ collection: this.collectionId, documentId: this.documentId, }) .then(({ data }) => { if(data !== null) { this.setState({storage: data.storage}); } }) .catch(err => console.log(err));}
NerdStorage アプリに戻り、テキスト入力フィールドを使用してさらにいくつかの行を追加して変更をテストします。 その後、アプリケーションを終了して再起動します。 アプリケーションは、移動する前に入力したすべてのデータを読み込み、表示します。
NerdStorageでデータを変更する
アプリ内のテーブルに表示される各 NerdStorage エントリには、特定のエントリを更新するために使用できるゴミ箱ボタンがあります。 ゴミ箱ボタンは、 _removeFromNerdStorage
ヘルパー メソッドを呼び出すことによって機能します。
このプロセスを機能させるには、 _removeFromNerdStorage
のコードを更新します。
_removeFromNerdStorage(index, data){ const { storage } = this.state; storage.pop(data);
this.setState({storage}, () => { UserStorageMutation.mutate({ actionType: UserStorageMutation.ACTION_TYPE.WRITE_DOCUMENT, collection: this.collectionId, documentId: this.documentId, document: { storage }, }) .then((res) => { Toast.showToast({ title: "NerdStorage Update.", type: Toast.TYPE.NORMAL }); }) .catch((err) => console.log(err)); });}
これを実行すると、ゴミ箱ボタンをクリックすると、関連付けられているアイテムが削除され、アプリが更新されて変更が反映されます。
NerdStorageからコレクションを削除する
ゴミ箱ボタンは特定のエントリを 1 つずつ削除するのに適した方法ですが、NerdStorage ドキュメント全体を一度に削除する機能も必要な場合があります。 これを行うには、アプリにDelete Document [ドキュメントの削除]ボタンを追加します。
アプリケーションの終了タグGrid
の直前に新しいGridItem
を追加します。 新しいGridItem
に次のコードを追加して、新しいボタンを表示します。
<Button onClick={() => this._deleteDocument()} type={Button.TYPE.DESTRUCTIVE} sizeType={Button.SIZE_TYPE.SMALL} iconType={Button.ICON_TYPE.INTERFACE__OPERATIONS__TRASH}> Delete Document</Button>;
新しいDelete Document [ドキュメントの削除]ボタンは_deleteDocument
ヘルパー メソッドを呼び出すため、次のコードを使用してそれを更新する必要があります。
_deleteDocument(){ this.setState({storage: []}); UserStorageMutation.mutate({ actionType: UserStorageMutation.ACTION_TYPE.DELETE_DOCUMENT, collection: this.collectionId, documentId: this.documentId, }); Toast.showToast({ title: "NerdStorage Update.", type: Toast.TYPE.CRITICAL });}
アプリケーションに戻ると、個別のゴミ箱ボタンと新しく追加されたDelete Document [ドキュメントの削除]ボタンの両方が表示されます。