我有一台本地发电机正在运行.我已经使用JavaScript控制台设置了我的表,它们从那里列出OK.

我还可以从JavaScript控制台向我的表中放置和获取项目:

var params = { TableName:"environmentId", Item: { environmentId: {"S":"a4fe1736-98cf-4560-bcf4-cc927730dd1b"} }};
dynamodb.putItem(params, function(err, data) {
    console.log("put : err was " + JSON.stringify(err) + " and data is " + JSON.stringify(data));
});

打印put : err was null and data is {}张我认为是"成功"的因为

params = { "Key":{"environmentId":{"S":"a4fe1736-98cf-45e0-bcf4-cc927730dd1b"}},"TableName":"environmentId"}
dynamodb.getItem(params, function(err, data) {
    console.log("get : err was " + JSON.stringify(err) + " and data is " + JSON.stringify(data));
});

打印get : err was null and data is {"Item":{"environmentId":{"S":"a4fe1736-98cf-45e0-bcf4-cc927730dd1b"}}}张,即检索我刚刚放在桌子上的对象.

但是,如果启动 node REPL并键入:

var AWS = require('aws-sdk');
AWS.config.loadFromPath("./config/credentials.js");
endpoint = new AWS.Endpoint("http://localhost:8000");
var dynamoOpts = {apiVersion: '2012-08-10', 'endpoint':endpoint};
var dynamodb = new AWS.DynamoDB(dynamoOpts);
var params = { TableName:"environmentId", Item: { environmentId: {"S":"a4fe1736-98cf-4560-bcf4-cc927730dd1b"} }};
dynamodb.putItem(params, function(err, data) {
    console.log("put : err was " + JSON.stringify(err) + " and data is " + JSON.stringify(data));
}

我得到一个未找到资源错误:

{ "message":"Cannot do operations on a non-existent table",
    "code":"ResourceNotFoundException",
    "time":"2015-04 10T10:01:26.319Z",
    "statusCode":400,
    "retryable":false,
    "retryDelay":0
}

ASW.putCommand返回的请求对象具有正确的端点:

{ protocol: 'http:',
    host: 'localhost:8000',
    port: 8000,
    hostname: 'localhost',
    pathname: '/',
    // etc.

同样的事情也发生在我的 node 应用程序中,但是连接到真正的AWS托管dynamo的代码是一样的.

推荐答案

问题是JavaScript控制台和应用程序使用不同的配置文件(凭证和区域),因此DynamoDB local将为它们创建单独的数据库文件.通过在启动本地DynamoDB时使用-sharedDb标志,将为所有客户端共享一个数据库文件.

doc人中:

-sharedDb-DynamoDB Local将使用单个数据库文件,而不是 for each 凭证和区域使用单独的文件.如果你指定

Node.js相关问答推荐

Sveltekit停靠的应用程序找不到从Build导入的包

Firebase-admin筛选器.或只考虑第一个WHERE子句

MongoDB如果文档S的字段小于另一个字段,则将该字段加一

在函数上执行 toString 的Typescript 会产生奇怪的字符 (path_1, (0, Promise.writeFile))

如果我在 tsx 文件中使用了use client,ssr 会如何发生?

如何从mongoose 对象内嵌套的数组中提取数组元素?

Gulp 能否向 Docker 发出增量构建的第一次迭代完成的信号?

如何在套接字对象中存储或添加数据?

firebase/messaging 不提供名为 getToken 的导出

使用react 组件加载特定 DIV 而无需重新加载整个页面

如何使用 Jest 模拟异步函数的延迟时间

使用 firebase 函数 api 运行套接字(相同的端口创建问题)

在本地运行 Cloud Functions 会出现错误functions.config() 不可用

如何undo撤消 Object.defineProperty 调用?

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

Nodejs续集批量更新

nodeJS - 如何使用 express 创建和读取会话

如何从 find 方法返回 Mongoose 结果?

Nodejs将字符串转换为UTF-8

FireStore 如果不存在则创建一个文档