问题标签 [dynamoose]

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 投票
3 回答
3728 浏览

amazon-web-services - dynamodb 中的哈希键和范围键是什么以及如何使用它们

我目前正在研究 dynamodb 文档,但不清楚哈希键和范围键是什么以及应该如何使用它们。

我只需要对它们是什么以及我应该如何使用它们进行基本解释,以便我可以继续使用它。

0 投票
1 回答
657 浏览

node.js - 如何从 DynamoDB 的 AttributeValue 格式实例化 Dynamoose 模型?

我正在使用 Dynamodb 流对记录进行一些处理,因为它们被添加或修改到我的表中。我还在我的应用程序中使用 Dynamoose 模型。

Dynamodb 流事件将一个事件对象传递给我的 node.js lambda 处理程序,其中包括对象record.dynamoDb.NewImagerecord.dynamoDb.OldImage. 但是,这些对象采用 DynamoDB 的 AttributeValue 格式,包括所有数据类型(“S”表示字符串),而不是普通的 javascript 对象。就这样record.id变成了record.id.S

Dynamoose 模型允许您从对象实例化模型,如下所示new Model(object):但是,它希望该参数是一个普通对象。

我知道 Dynamoose 有一个 dynamodb 解析器,我认为它的 Schema.prototype.dynamodbparse()。但是,这并没有按预期工作。

那么有没有办法从 DynamoDB 的 AttributeValue 格式实例化一个 Dynamoose 模型呢?有没有其他人这样做过?

另一种方法是,我只是从 中提取密钥record,然后使用 访问数据库,Model.get({ id: idFromEvent });但我认为这效率低下,因为记录只是从流中交给我的。

0 投票
0 回答
154 浏览

node.js - Dynamo 和 Mongo 的 NodeJS 包装器

是否有一个简单的抽象层同时支持 DynamoDB 和 MongoDB,而在DynamooseMongoose之上的简单包装器失败了。

我已经尝试自己构建包装器,但似乎无法解决如何实现这一点,我希望按照这个思路做一些事情,不幸的是,当我尝试导入它时它最终是未定义的。

如果需要,我可以尝试使用仅抽象基本 CRUD 功能的打字稿自己编写一个包装器。

0 投票
1 回答
1261 浏览

jestjs - 在 jest mock 中使用原始函数会导致无限循环

我有一个来自 dynamoose的可链接方法,在测试中我想向链中添加一个额外的方法。

本质上,在测试中我想替换所有实例

所以我尝试了:

但这显然会导致某种无限循环,因为我得到RangeError: Maximum call stack size exceeded

如何在模拟实现中使用函数的原始实现?

0 投票
0 回答
223 浏览

node.js - 使用 dynamoose (nodejs) 连接到 DAX 集群

我正在尝试从我的节点应用程序连接到 dax 集群

但是,根据 DAX 集群指标,连接看起来是临时的:

在此处输入图像描述

应用程序仍然直接从 dynamoDB 表中读取,而不是通过 DAX。知道为什么吗?

0 投票
1 回答
677 浏览

javascript - 扫描直到找到 x 个项目?

我正在编写一个查询来查找其用户名以给定前缀开头的所有用户。我只希望查询最多返回 10 个项目。我现在的查询是

在更仔细地阅读了 dynamoose文档.limit()之后,我意识到限制是它检查的表条目数,而不是它返回的条目数。因此,如果我有 10 个用户,其中 5 个用户的用户名以“m”开头,则类似的查询query: { prefix: 'm', limit: 5}可能会返回 0 个项目。

我知道我可以查询数据库中的所有用户,然后只返回其中的一些,但它是不可扩展的。如何查询数据库,以便在找到 10 个匹配项时停止查看表?

0 投票
1 回答
664 浏览

amazon-dynamodb - 无法扫描 DynamoDB 映射嵌套属性

我是 DynamoDB 的新手,我正在尝试使用Dynamoose库从 javascript 查询表。我有一个表,其主分区键为字符串类型,称为“id”,它基本上是一个带有用户 ID 的长字符串。我在表中有一个名为“attributes”的第二列,它是一个 DynamoDB 映射,用于存储任意用户属性(我无法更改架构,因为这是预定义的持久性适配器的工作方式,我一直在使用它为了方便)。这是表中记录的示例:

Map中的数字字段,例如“12”字段可以解释为“week10”、“week11”、“week12”和“week13”,数值2、4、6和8是次数该应用程序于该周启动。

我需要做的是获取在特定周(例如第 12 周)中有超过 4 次启动的记录的所有用户 ID,我还需要获取在四个范围内总共有 20 次启动的用户 ID 列表周(例如从第 10 周到第 13 周)。

使用 Dynamoose,我必须使用以下模型:

(以匹配我正在使用的持久性适配器生成的表结构)。我假设我需要进行 DynamoDB“扫描”来实现这一点,而不是“查询”,我尝试了这个开始并获得第 12 周等于 6 的记录无济于事(结果我得到一个空集):

如果您不了解 Dynamoose,但可以通过 AWS 开发工具包帮助解决此问题,请直接运行 DynamoDB 扫描,这可能对我也有帮助。

谢谢!!

0 投票
1 回答
245 浏览

amazon-web-services - 即时切换 Dynamodb 区域

aws-sdk有没有办法通过使用 javascript或dynamoosenpm 包在 DynamoDB 区域之间动态切换?

假设 2 个表存在于孟买 (ap-south-1) 和法兰克福 (eu-central-1) 两个不同的区域。最初,当应用程序启动时,它使用 ap-south-1,然后经过一些业务逻辑,它需要将数据库实例路由到 eu-central-1。

那么,如何通过使用 javascript aws-sdk 或 dynmoose 包来实现它。

现在,我正在使用下面的代码片段。但它不工作

有人可以帮忙吗?有没有办法记录运行特定查询的 AWS Dynamodb 区域?就像启用 AWS 记录器一样,它只是输出

0 投票
1 回答
1247 浏览

dynamoose - 如何 OR 查询 Dynamoose 中的包含项?

我想从 DynamoDB 的列中搜索(查询)一堆字符串。使用 Dynamoose https://github.com/dynamoose/dynamoose 但它什么也没返回。如果允许这种类型的查询或者是否有其他相同的语法,你能帮忙吗?

代码示例

我想要所有这些品种,所以这些是 OR 查询。请帮忙。

0 投票
3 回答
1020 浏览

typescript - 导出 Dynamoose Typescript 模型

  1. dynamoose 库为构建模型提供了以下签名:
  1. TypeScript 文件中的消费按如下方式进行:
  1. 编译产生错误:

关于 SO 的类似问题的其他答案建议ModelDocumentConstructor应该导入。TS4023:导出的变量 <x> 具有或正在使用来自外部模块的名称 <y>,但无法命名

但是接口本身没有导出,所以不能导入。