[英]Query multiple items from DynamoDB
我正在 AWS 中設計一個簡單的無服務器應用程序:API Gateway-> Lambda (node.js) -> DynamoDB。
我想將客戶數量保持在同一張桌子和相應的項目中,例如
Client_id, no, item, price
0001, 1, 盒子, 10
0001, 2, 表格, 100
0002, 1, 椅子, 20
0003, 1, 燈, 15
我選擇 Primary Key = Client_id 和 Sort Key = no,目前我可以使用“dynamodb.get”function 獲取單個項目,但在為一個客戶獲取所有項目時遇到問題。 我嘗試使用“dynomodb.batchget”,但我需要知道表中有多少項目並且可能會做一些循環。 也許有不同的方式來從單個客戶端獲取所有項目?
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.get2 = (event, context, callback) => {
var params = {
"RequestItems": {
"items": {
"Keys": [{
id: Number(event.pathParameters.id),
no: 1
},
{
id: Number(event.pathParameters.id),
no: 2
}
]
}
},
"ReturnConsumedCapacity": "TOTAL"
};
dynamoDb.batchGet(params, function(err, data) {
if (err) {
console.error(err);
callback(null, {
statusCode: err.statusCode || 501,
headers: { 'Content-Type': 'text/plain' },
body: 'Couldn\'t fetch the item.',
});
return;
}
const response = {
statusCode: 200,
body: JSON.stringify(data),
};
callback(null, response);
});
};```
要查找給定Client_id
的所有記錄,請使用query
。 這是一個例子:
const AWS = require("aws-sdk");
AWS.config.update({region: 'us-east-1'});
const params = {
TableName: 'mytable',
KeyConditionExpression: 'Client_id = :Client_id',
ExpressionAttributeValues: {
':Client_id': '0001',
},
};
const dc = new AWS.DynamoDB.DocumentClient();
dc.query(params, (err, data) => {
if (err) {
console.log('Error', err);
} else {
for (const item of data.Items) {
console.log('item:', item);
};
}
});
但是,如果您事先知道所需項目的完整(分區和排序)鍵(而不是具有給定分區鍵的所有項目),那么您可以使用batchGetItem
。
此外,請考慮使用 SDK 函數的承諾變體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.