Mic*_*lak 1 amazon-web-services node.js amazon-dynamodb aws-lambda
我正在 AWS 中设计一个简单的无服务器应用程序:API Gateway-> Lambda (node.js) -> DynamoDB。
我想将客户数量保留在同一张桌子和相应的项目中,例如
Client_id,编号,项目,价格
0001, 1, 盒子, 10
0001, 2, 表, 100
0002, 1, 椅子, 20
0003, 1, 灯, 15
我选择 Primary Key = Client_id 和 Sort Key = no,目前我可以使用“dynamodb.get”函数获取单个项目,但在获取一个客户端的所有项目时遇到问题。我尝试使用“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);
});
};```
Run Code Online (Sandbox Code Playgroud)
要查找给定 的所有记录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);
};
}
});
Run Code Online (Sandbox Code Playgroud)
但是,如果您事先知道所需项目的完整(分区和排序)键(而不是具有给定分区键的所有项目),那么您可以使用batchGetItem.
此外,请考虑使用SDK 函数的承诺变体。
| 归档时间: |
|
| 查看次数: |
3735 次 |
| 最近记录: |