[英]How to connect aws dynamodb from nodejs
我正在使用aws-sdk
与 dynamod 连接,我尝试了以下方法与 dynamodb 连接。
const aws_remote_config = {
accessKeyId: process.env.ACCESS_KEY,
secretAccessKey: process.env.SECRET_KEY,
region: process.env.REGION,
}
express.Router().get("/test",(req,res)=>{
AWS.config.update(aws_remote_config);
const docClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: "test"
};
docClient.scan(params, function (err, data) {
if (err) {
//console.log(err)
res.send({
success: false,
message: err
});
} else {
const { Items } = data;
res.send({
success: true,
movies: Items
});
}
});
})
我收到了这个回复
{"success":false,"message":{"message":"Requested resource not found","code":"ResourceNotFoundException","time":"2021-01-27T07:43:55.351Z","requestId":"L2MNQCL2EKUM13QED03FMK3ADJVV4KQNSO5AEMVJF66Q9ASUAAJG","statusCode":400,"retryable":false,"retryDelay":14.298055549242983}}
const aws_remote_config = {
accessKeyId: process.env.ACCESS_KEY,
secretAccessKey: process.env.SECRET_KEY,
region: process.env.REGION,
}
express.Router().get("/test",(req,res)=>{
AWS.config.update(aws_remote_config);
const docClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: "test"
};
var dynamodb = new AWS.DynamoDB();
var param = {}
dynamodb.listTables(param, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log("Sussess data",data);
});
})
我懂了
Sussess data { TableNames: [] }
// i tried to connect like this
AWS.config.loadFromPath('../../config/db.json');
// path is correct, i checked by console.log(require('../../config/db.json'));
我懂了
Error: ENOENT: no such file or directory, open '../../config/db.json'
at Object.openSync (fs.js:462:3)
at Object.readFileSync (fs.js:364:35)
at Object.readFileSync (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\aws-sdk\lib\util.js:95:26)
at Config.loadFromPath (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\aws-sdk\lib\config.js:473:39)
at C:\Users\Rahul kumar\desktop\Projects\merchent-backend\routes\user\test.js:9:16
at Layer.handle [as handle_request] (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Rahul kumar\desktop\Projects\merchent-backend\node_modules\express\lib\router\index.js:281:22
我同意另一个答案:方法 #2 似乎有效。 一点是listTables
不需要任何 arguments 即可成功。 两个arguments...
Limit
是可选的; 默认为 100ExclusiveStartTableName
也是可选的。 仅当您通过一长串表名“分页”并需要获取下一页时才应提供它。长话短说,这...
Sussess data { TableNames: [] }
... 显示您通过身份验证的帐户没有任何 DynamoDB 表。 所以表名数组是空的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.