JavaScriptでMomento Storageを始める。
Momentoは2つのJavaScript SDKを提供しています。1つはNode.js用、1つはブラウザその他のWebアプリケーション用です。2つのSDKは同じAPIを持っているため、import
文以外、コードは同じように見えますが、その裏側では、異なるJavaScript実行環境で最適なパフォーマンスと互換性を実現するために構築されています。
このページには、Momento Storageをすぐに使い始めるために必要な基本的な情報が記載されています。より詳細な情報や例については、上記のリンク先の SDK ページを参照してください。
Momento SDKをインストールする。
既存のNode.jsプロジェクトにMomento Node.js SDKをインストールします。:
npm install @gomomento/sdk
または、既存のブラウザ アプリケーション プロジェクトに Momento Web SDK をインストールします。:
npm install @gomomento/sdk-web
gomento/sdk
または@gomento/sdk-web
のどちらか片方だけが必要です。両方は必要ありません。
APIキーの設定。
Momentoで認証するには、Momento APIキーが必要です。 Momento Web Console](https://console.gomomento.com/caches)から取得できます。 APIキーを取得したら、Momentoクライアントが利用できるように環境変数に保存してください:
export MOMENTO_API_KEY=<your Momento API key here>
Note: セキュリティ強化のためには、APIキーを環境変数ではなく、AWS Secret ManagerやGCP Secret Managerのようなものに入れるのがベストプラクティスですが、ここではデモのためにAPIキーを使ってます。
ライブラリのインポートとStorageClientオブジェクトの作成。
このコードではメイン関数を設定し、必要なインポートを取り込み、キャッシュとのやりとりに使用するStorageClientをインスタンス化します。
/* eslint-disable @typescript-eslint/no-unused-vars */
import {PreviewStorageClient, StorageConfigurations} from '@gomomento/sdk';
const storageClient = new PreviewStorageClient({
configuration: StorageConfigurations.Laptop.latest(),
});
Momento Storageに新しいストアを作成する。
この機能を使用して、アカウントに新しいストアを作成します。
const result = await storageClient.createStore(storeName);
switch (result.type) {
case CreateStoreResponse.AlreadyExists:
console.log(`Store '${storeName}' already exists`);
break;
case CreateStoreResponse.Success:
console.log(`Store '${storeName}' created`);
break;
case CreateStoreResponse.Error:
throw new Error(
`An error occurred while attempting to create store '${storeName}': ${result.errorCode()}: ${result.toString()}`
);
}
あなたのアカウントにある既存のストア名をリストアップする
アカウントのストア名の単純なリスト。
const result = await storageClient.listStores();
switch (result.type) {
case ListStoresResponse.Success:
console.log(
`Stores:\n${result
.stores()
.map(c => c.getName())
.join('\n')}\n\n`
);
break;
case ListStoresResponse.Error:
throw new Error(`An error occurred while attempting to list stores: ${result.errorCode()}: ${result.toString()}`);
}
ストアにアイテムを書き込む
プット操作の簡単な例。
// to store a string value:
const result = await storageClient.putString(storeName, 'test-key', 'test-value');
switch (result.type) {
case StoragePutResponse.Success:
console.log("Key 'test-key' stored successfully");
break;
case StoragePutResponse.Error:
throw new Error(
`An error occurred while attempting to store key 'test-key' in store '${storeName}': ${result.errorCode()}: ${result.toString()}`
);
}
// Momento storage also supports these other data types:
await storageClient.putInt(storeName, 'test-key', 42);
await storageClient.putDouble(storeName, 'test-key', 3.14);
await storageClient.putBytes(storeName, 'test-key', Buffer.from('test-value'));
ストアのアイテムを読み込む。
これは、ストアから項目を取得する単純な読み取り操作の例でです。
const getResponse = await storageClient.get(storeName, 'test-key');
// simplified style; assume the value was found, and that it was a string
console.log(`string hit: ${getResponse.value()!.string()!}`);
// if the value was an integer:
const integerGetResponse = await storageClient.get(storeName, 'test-integer-key');
console.log(`integer hit: ${integerGetResponse.value()!.int()!}`);
// pattern-matching style; safer for production code
switch (getResponse.type) {
case StorageGetResponse.Found:
// if you know the value is a string:
console.log(`Retrieved value for key 'test-key': ${getResponse.value().string()!}`);
break;
case StorageGetResponse.NotFound:
console.log(`Key 'test-key' was not found in store '${storeName}'`);
break;
case StorageGetResponse.Error:
throw new Error(
`An error occurred while attempting to get key 'test-key' from store '${storeName}': ${getResponse.errorCode()}: ${getResponse.toString()}`
);
}
コードの実行。
JavaScript SDK GitHub repo examples directoryに完全な動作例があります。
これらの基本的なAPIコール以外のMomento APIコールの詳細については、APIリファレンスページをチェックしてください。