行の取得
Catalyst Data Store のテーブルから、単一行または複数行のデータを取得できます。これらのコードスニペットで使用している table の参照は、テーブルインスタンスまたはテーブルメタのいずれかです。
単一行の取得
getRow() メソッドを使用して、テーブルから単一行を取得できます。以下のサンプルコードに示すように、このメソッドに行の一意の Row ID を渡す必要があります。
ここで返される Promise は JSON の行オブジェクトに解決されます。
//テーブルインスタンスまたはテーブルメタオブジェクトを使用して行IDを渡して行を取得する
let rowPromise = table.getRow(1510000000109476);
受信するサンプルレスポンスを以下に示します。レスポンスは Node.js の両方のバージョンで同じです。
{
CREATORID: "2136000000006003",
MODIFIEDTIME: "2021-08-17 13:02:11:184",
CREATEDTIME: "2021-08-16
16:29:10:499",
CityName: "Pune",
ROWID: "2136000000011011"
}
ページネーションによる全行の取得
getMyPagedRows() 関数を使用してコードにページネーションを組み込むことで、Data Store のテーブルからすべてのデータ行を取得できます。ページネーションを使用すると、イテレーションを通じてテーブルの行をバッチまたはページ単位で取得できます。
このイテレーションは、以下のコードに示すように hasNext, で検証されるすべての行が取得されるまで実行されます。テーブルは一意のテーブル ID で参照できます。
たとえば、各ページで 100 行ずつのバッチで行を取得する場合、各ページで取得する最大行数の変数を定義し、数を指定できます。以下のサンプルコードでは、maxRows を 100 に設定しています。
さらに、ループの各実行後に、後続のデータ取得を認可するトークン文字列がレスポンスデータに含まれます。このトークンは next_token を通じて取得でき、以下のコードに示すように、後続のイテレーション時に nextToken の値として渡します。ループの最初の実行時、nextToken 文字列の値は undefined に設定されます。次のレコードセットは、レスポンスデータの more_records を通じて取得されます。
//ページネーションで行を取得し、最初のイテレーションではnextTokenの値をundefinedとして宣言する function
getMyPagedRows(hasNext = true, nextToken = undefined)
{
if (!hasNext)
{
return;
}
dataStore.table(195000000042025)
//レコードを取得するテーブルのテーブルIDを指定する
.getPagedRows({ nextToken, maxRows: 100 })
//1ページで取得する最大行数を定義する and pass it along with nextToken
.then(({ data, next_token, more_records
}) => { console.log('rows : ', data);
//テーブルから行を取得する
return getMyPagedRows(more_records, next_token);
//次のレコードセットと次の反復用のトークン文字列を取得する
}) .catch((err) => {
console.log(err.toString()); });
}
さらにレコードがある場合に受信するサンプルレスポンスを以下に示します。この場合、more_records パラメータは true に設定されます。
Node.js v2.1.0
{
"status": 200,
"data": [
{
"CREATORID": "3359000000006003",
"MODIFIEDTIME": "2022-01-11 18:18:24:855",
"name": "Alex Jones",
"CREATEDTIME": "2022-01-11 18:18:24:855",
"ROWID": "3359000000108111"
},
{
"CREATORID": "3359000000006003",
"MODIFIEDTIME": "2022-01-11 18:18:25:117",
"name": "Robert Neal",
"CREATEDTIME": "2022-01-11 18:18:25:117",
"ROWID": "3359000000108114"
},
{
"CREATORID": "3359000000006003",
"MODIFIEDTIME": "2022-01-11 18:18:25:120",
"name": "Roslyn Gunn",
"CREATEDTIME": "2022-01-11 18:18:25:120",
"ROWID": "3359000000108117"
}
],
"message": "OK",
"more_records": true,
"next_token": "{{token}}"
}
これ以上レコードがない場合に受信するサンプルレスポンスを以下に示します。この場合、more_records パラメータは false に設定されます。
Node.js v2.1.0
{
"status": 200,
"data": [
{
"CREATORID": "3359000000006003",
"MODIFIEDTIME": "2022-01-11 18:18:43:556",
"name": "Alex Jones",
"CREATEDTIME": "2022-01-11 18:18:43:556",
"ROWID": "3359000000108410"
},
{
"CREATORID": "3359000000006003",
"MODIFIEDTIME": "2022-01-11 18:18:43:557",
"name": "Robert Neal",
"CREATEDTIME": "2022-01-11 18:18:43:557",
"ROWID": "3359000000108413"
},
{
"CREATORID": "3359000000006003",
"MODIFIEDTIME": "2022-01-11 18:18:43:568",
"name": "Roslyn Gunn",
"CREATEDTIME": "2022-01-11 18:18:43:568",
"ROWID": "3359000000108417"
}
],
"message": "OK",
"more_records": false
}
最終更新日 2026-03-30 13:40:30 +0530 IST
Yes
No
Send your feedback to us