我正在构建一个 Node JS 应用程序。对于数据库,我使用的是 AWS DynamoDB。我现在正在做的是我在本地安装了 DynamoDB 并改用本地版本。但似乎我的应用程序没有发送到我机器上安装的本地 DynamoDB。
我在本地安装了 DynamoDB 并按照此链接https://cloudaffaire.com/install-dynamodb-in-local-system/中的说明启动并运行它。在这个阶段它在 localhost:8000 运行。
然后我创建了一个在终端中运行以下命令的表。
aws dynamodb create-table --table-name CloudAffaire --attribute-definitions AttributeName=Topic,AttributeType=S --key-schema AttributeName=Topic,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --endpoint-url http://localhost:8000 --output table
它成功并且没有错误。
然后我下载了 DynamoDB admin 以在 GUI 中可视化数据。为此,我按照此链接安装了该工具,https://medium.com/swlh/a-gui-for-local-dynamodb-dynamodb-admin-b16998323f8e#:~:text=dynamodb%2Dadmin%20is%20a %20图形,%2Dlocal%2C%20dynalite%20或%20localstack。
我运行该工具,我可以看到我创建的表在 UI 中。
然后我在我的节点 JS 项目中使用代码创建了一个表。这是我的代码。
// running this file using `node -e 'require(\"./db/utils.js\").createTables()'` will create the table
require('dotenv').config();
const AWS = require("aws-sdk");
AWS.config.update({
region: "local",
endpoint: "http://localhost:8000"
});
const dynamodb = new AWS.DynamoDB();
function createTables() {
const params = {
TableName: "RegionTest",
KeySchema: [{
AttributeName: "name",
KeyType: "HASH" // HASH - partition key and RANGE - sort key
}],
AttributeDefinitions: [{
AttributeName: "name",
AttributeType: "S" // S = string, B = binary, N = number
}],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
}
};
DynamoDB.createTable(params, function(err, data) {
if (err) {
console.error("Unable to create table", err);
} else {
console.log("Created table", data);
}
});
}
module.exports = {
createTables
}
然后我在终端中运行以下命令来创建表。
node -e 'require(\"./db/utils.js\").createTables()'
表已创建,我得到以下输出。
Created table {
TableDescription: {
AttributeDefinitions: [ [Object] ],
KeySchema: [ [Object] ],
TableStatus: 'ACTIVE',
CreationDateTime: 2021-05-23T11:28:28.122Z,
ProvisionedThroughput: {
LastIncreaseDateTime: 1970-01-01T00:00:00.000Z,
LastDecreaseDateTime: 1970-01-01T00:00:00.000Z,
NumberOfDecreasesToday: 0,
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
},
TableSizeBytes: 0,
ItemCount: 0,
TableArn: 'arn:aws:dynamodb:ddblocal:000000000000:table/Region'
}
}
当我转到在 localhost:8001 上运行的 DynamoDB 管理员时,新表不存在。我只能看到我使用终端创建的上一个表。我的代码有什么问题,如何修复它以使用本地 DynamoDB?