问题标签 [dynamo-local]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
850 浏览

node.js - DynamoDB 查询在 mocha 测试中超时

我正在运行一对 Docker 容器,一个运行 DynamoDB 本地,另一个运行 Nodejs。它们是链接的,我可以通过运行来确认链接是否有效:

我不认为这是问题的一部分,我只是为了完整起见在这里列出它。

但是,我无法在 mocha 中使用以下测试脚本。测试只是超时:

错误:超过 2000 毫秒的超时。确保在此测试中调用了 done() 回调。

这是测试脚本:

我可以看到记录了“检查表...”,但没有看到“返回的列表表”。

0 投票
2 回答
10452 浏览

amazon-web-services - Dynamodb - 添加非关键属性

我想将数据插入到本地的 dynamodb 中。但是,我只有一个关键属性和多个非关键属性。

我有多个这样的价值观。这是一条记录,是我要插入的示例。以下是我正在尝试的:

我收到以下错误:

调用 CreateTable 操作时发生错误 (ValidationException):键模式中的属性数必须与属性定义中定义的属性数匹配。

0 投票
1 回答
1603 浏览

amazon-dynamodb-streams - DynamoDB 本地:Streams.getRecords 返回 TrimmedDataAccessException

我正在使用 DynamoDB local 从 nodejs (Javascript SDK) 运行集成测试。当我调用 getRecords 时,我收到“TrimmedDataAccessException”。如果我在 AWS(非本地)中对 DynamoDB 运行相同的代码,它工作正常。以下是步骤:

  • 运行 DynamoDB
  • 创建表“事件存储”
  • 创建表“音乐”
  • describeTable "EventStore" (获取 LatestStreamArn")
  • describeStream 返回为“LatestStreamArn”(获取 ShardId)
  • getShardIterator with ShardIteratorType "LATEST"
  • 将记录放入“音乐”表
  • 将记录放入“EventStore”表
  • 从“EventStore”流中获取记录

“put”命令的顺序很重要。如果我首先放入“EventStore”,一切正常,但当我首先放入“音乐”时,它会失败。如果我更改订单,我的应用程序逻辑就会出错,所以只是更改订单对我来说是个问题。

运行 DynamoDB

创建表

创建表(响应)

描述表(事件存储)

describeTable(EventStore) 响应

描述蒸汽

描述流响应

获取分片迭代器

getShardIterator 响应

放(表名:音乐)

放(表名:EventStore)

获取记录(事件存储)

getRecords (EventStore) 响应

0 投票
1 回答
1919 浏览

node.js - DynamoDBLocal:如何启动和停止数据库?

我有一个“dynamodb_helper.js”,我使用local-dynamo在本地模拟 DynamoDB。我能够在测试之前启动服务器并成功运行它,但是 stopDB() 似乎不起作用。任何帮助/建议将不胜感激。因此,即使在测试结束后,服务器子进程仍会继续运行。

请在下面找到我的代码。

0 投票
1 回答
88 浏览

titan - 随着更多顶点/边的添加,titan + dynamoDB(本地)上的图形处理越来越慢

我正在使用 AWS dynamoDB 本地实施作为 16GB 机器上的存储后端来处理 Titan 1.0。我的用例涉及定期生成包含大约 120K 的顶点和边的图。每次我在内存中生成一个新图形时,我都会检查存储在 DB 中的图形,然后 (i) 添加不存在的顶点/边,或者 (ii) 如果它们已经存在则更新属性(存在由“标签”确定和一个“价值”属性)。请注意,“值”属性已编入索引。事务以 500 个顶点为一批提交。

问题:我发现每次处理新图时这个过程都会变慢(第一个图在 45 分钟内完成,最初是空数据库,第二个花了 2.5 小时,第三个在 3.5 小时内,第四个在 6 小时内,第五个在 10 小时内等等)。事实上,在处理给定的图时,它在开始时相当快,但逐渐变慢(初始批次需要 2-4 秒,后来对于 500 个节点的相同批次大小,它增加到 100 秒;我有时也看到它一批需要 1000-2000 秒)。这只是处理时间(见下面的方法);提交总是需要 8-10 秒。我将 jvm 堆大小配置为 10G,我注意到当应用程序运行时,它最终会用完所有这些。

问题:这种行为是否可以预期?在我看来,这里出了点问题(在我的配置/方法中?)。任何帮助或建议将不胜感激。

方法:

  • 从内存图的根节点开始,检索所有子节点并维护一个队列
  • 对于每个子节点,我检查它是否存在于数据库中,否则创建新节点并更新一些属性

    /li>

创建函数:

Schema Def:(显示一些索引)
注意:
“EdgeLabel” = Constants.EdgeLabels.Uses
“EdgeProperty1” = Constants.EdgePropertyKeys.EndpointId
“EdgeProperty2” = Constants.EdgePropertyKeys.Timestamp

0 投票
0 回答
4579 浏览

javascript - Node.js 连接 ECONNREFUSED 127.0.0.1:8000 DynamoDB 本地错误

我正在使用这个NPM 插件来处理在我的 Node 应用程序中创建本地 DynamoDB 本地服务器。出于某种原因,有时它会给我以下错误。无法弄清楚为什么,但在特定测试部分运行测试时似乎总是会发生这种情况。

绝对不会每次都发生。也许50%左右。很奇怪。

我已阅读该错误意味着启动 DynamoDB 本地服务器失败。但我不知道为什么,因为它没有提供更多细节。

哦,这是我创建服务器的代码。

有任何想法吗?

0 投票
1 回答
232 浏览

junit - 每个单元测试类或单例实例化的多个 DynamoDbLocal 实例

我正在尝试将 DynamoDbLocal 服务器用于单元测试用例。并提出了两个选择,

要么定义一个 junit 类规则,它在课前启动本地服务器并在课后停止它。所以本质上它将为每个单元测试类启动和停止服务器。

或者

单例实例:

你会推荐哪一个,你有更好的做法吗?请注意,我应该能够将它与 Guice 依赖注入框架一起使用。

0 投票
0 回答
106 浏览

javascript - 将 SVG 路径输入到 DynamoDb

我在尝试将 svg 字符串插入 dynamodb 时遇到问题。svg 路径包含在<svg></svg>我认为导致插入问题的标签中。

当我尝试使用具有“<”和“>”的内容更新表时,它似乎没有正确地使用值更新属性,而是返回一个空字符串。在插入过程中,它似乎否定了“<”和“>”之间的任何内容。

0 投票
1 回答
452 浏览

java - 无法以编程方式使用 dynamodblocal 访问 http://localhost:{port}

我正在使用 com.amazonaws 的 dynamodblocal(来自 maven 的 1.10.5.1)在本地创建一个 inMemory dynamoDB。

启动本地服务器的 Java 代码是:

这是确认我已成功启动本地 dynamodb 的日志:

http://localhost:60677/shell此处使用端口 60677,我可以从 Web 浏览器手动打开。但是当我尝试以编程方式访问它时它不起作用。我不断得到HTTP/1.1 500 Server Error

这会给我 500 错误(端口将是 的输出getAvailablePort()):

另外,当我从命令行启动一个时:

并尝试以编程方式连接到它,它工作正常。它允许我以编程方式执行所有 CRUD 操作。

我究竟做错了什么?

0 投票
3 回答
9124 浏览

arrays - 更新 AWS dynamoDB 中的 JSON 数组

我的文档如下所示:

比如说,我需要使用AttendeeId: 2016102973634-df更新参加者 JSON 数组。我尝试了许多使用更新和条件表达式的方法,但没有成功。

这是我的尝试:

找不到用于更新数组中的 Json 的任何资源。

在@notionquest 的评论之后: - 没有使用任何 JsonMarshaller。最初,我将空数组添加到参加者字段,如下所示:

然后当有新的与会者来时,我将其添加到与会者属性中,如下所示:

正如您在上面的代码片段中看到的,最初我添加了空的[] 数组并使用上面的代码添加了一个新的参加者。现在,如何更新数组中的特定 JSON。如果你说这是不可能的,我还能尝试什么?

我应该试试这个:

  1. 获取完整的 JSON。
  2. 操作 JSOn 并在我的 nodeJS 中更改我想要的东西。
  3. 然后将新的 JSON 更新为 dynamoDB。
  4. 但这消耗了对 dynamoDB 的两次调用,这似乎是低效的。

想知道有没有绕道的方法?