问题标签 [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.
node.js - 通过不同属性进行动态查询(Node.js)
我需要通过非键属性从DynamoDB
via获取记录(-s)。Dynamoose
例如,我需要从someModel
字段my_field
等于的表中获取所有记录111
。我通过以下方式做到这一点:
这段代码停止执行!我的意思是后面的代码不会被调用。
如果我将代码更改为此:
我的查询正在运行,但data
包含:
我知道上面的代码是为查询准备的查询参数,但是我如何应用它们并执行查询DynamoDB
呢?当然,查询代码放在async
函数内部——这就是await
写在那里的原因。
我还使用serverless
框架来描述DynamoDB
方案。但是我写的所有模型都是通过dynamoose
.
我错在哪里?
node.js - Dynamoose .update 不像 AWS javascript SDK 那样工作。我需要使用 SDK 来更新项目吗?
这是架构和模型
这是 AWS 开发工具包版本的更新
这是我认为在 Dynamoose 中的等效操作
我能够使用 dynamoose 实现这一点的唯一方法是重新创建整个条目并使用 newOrder(replacementObject).save()。关于我可能遗漏的任何想法?使用流畅的 dynamoose 语法来获取 orderId 然后将其放入 AWS SDK 语法中以添加布尔键值对,这感觉很愚蠢。感谢您的阅读和任何帮助。
编辑:当我使用相同的语法但尝试更新现有字符串时,它可以工作。
但是当我尝试修改现有的布尔值时,它不会从 true 变为 false
它也不会添加字符串类型的新键
回顾一下通过 dynamoose 语法进行的更新,它似乎只能更改存储在 dynamo 中的现有字符串。它不会将新键添加为字符串或布尔值,也不会更改现有的布尔值。通过 AWS 开发工具包进行的更新采用主键和新键值对并添加到 dynamo 中的条目。这种行为可以通过 dynamoose 语法来实现吗?
编辑 2 - 当且仅当在传递给模型的模式中定义该键时,Dynamoose 才会将键值添加到 dynamo 中的现有条目。无论 saveUnkown: true 是什么,dynamoose 都不能使用 update 修改任何未在传递给模型的 dynamoose 模式中保存到 dynamo 的键值对。添加:fulfilled: { type: Boolean },
到 orederSchema 和以下代码添加 {fulfilled: true } 到 dynamo 条目。
这是预期的行为吗?对我来说,模型中未明确定义的数据将无法使用更新命令修改,这似乎很奇怪,特别是因为 SDK 没有此限制。
要点:dynamoose 模型必须至少包含用作哈希、范围、全局二级索引、全局二级索引范围的键,并且令我惊讶的是,在初始输入后可能需要更改的任何键。
javascript - 如何使用 dynamoose 进行跳过、排序和限制?
我以前使用过 MongoDB 和 mongoose,现在尝试在我的应用程序中实现 dynamoose,如何在 dynamoose 中为下面显示的 mongoose 查询编写相同的查询?
return this.scan({ abcd: { $ne: null }, activeFlag: true }).skip(9 * (page - 1)).sort({ date: -1 }).limit(9)
我需要相同的 $ne - 不等于跳过排序并且还限制
javascript - Dynamoose - 不能用 2 个键查询和在哪里
我已经在 GitHub 上打开了一个相关问题,但也许这里有人可以更快地提供帮助。
概括:
ValidationException: Query key condition not supported
我需要在给定位置的最后(数量)秒内查找记录。很简单,但已经与其他问题相关:
一个和另一个
作品:
Activity.query('locationId').eq(locationId).exec();
不工作:
Activity.query('locationId').eq(locationId).where('createdAt').ge(date).exec();
代码示例:
架构 执行函数的代码有趣的是,我发现这是建议使用的解决方法,直到他们合并 PR 赋予将时间戳指定为键的能力,但不幸的是它不起作用。
node.js - Dynamoose 中的 Schema.Types.ObjectId 等价物
我正在使用 Node 和 React 创建一个片段管理器,这只是一个学习项目,我们可以在我工作的地方使用它。
我之前使用 Express、Mongoose 和 mLab 进行了设置。怀着学习和挑战自我的心态,我想转而使用 AWS 的 DynamoDB。
我发现 Dynaamoose 将是一个很大的帮助,因为 API 几乎与 Mongoose 相同。但是,我似乎无法弄清楚如何重新创建 Schema.Types.ObjectId 所做的事情。
它的格式不完美,但基本上我如何才能以同样的方式引用我的用户和我的类别?
amazon-dynamodb - 使用 DynamooseJs 在 DynamoDB 中进行 3 列查询
我的表是(device, type, value, timestamp)
,其中(device,type,timestamp)
创建了一个唯一组合(非 DynamoDB DBMS 中复合键的候选者)。
我的查询可以介于这三个属性中的任何一个之间,例如
GET ( value
)s from ( device
) with ( type
) 具有 ( timestamp
) 大于 < some-timestamp
>
我正在使用dynamoosejs/dynamoose。从大多数搜索中,我相信我应该使用三个字段的组合(作为单个字段 ; device-type-timestamp
)作为id
. 但是set: function
ofSchema
不允许我使用对象属性(例如this.device
),并且由于某些原因,我无法在外部执行此操作。
我得到的最接近的 ( id:uuidv4:hashKey, device:string:GlobalSecIndex, type:string:LocalSecIndex, timestamp:Date:LocalSecIndex
)
和
( id:uuidv4:rangeKey, device:string:hashKey, type:string:LocalSecIndex, timestamp:Date:LocalSecIndex
)
等等..
但是,在使用 Query 时,很难获取特定device,type
的结果,因为id
, (hashKey
或rangeKey
) 总是从场景中丢失。
所以这个问题。对于这样的桌子,你会怎么做?
需要注意的是,该表旨在收集来自 IoT 设备的内容,每个设备平均每 5 分钟生成一次。
node.js - 如何在dynamoose中根据注册日期对所有项目进行排序
摘要:如何根据注册日期对所有项目进行排序。当我尝试它没有输出时,我的代码如下所示
代码示例:
架构
环境:
- 操作系统:ubuntu
- 操作系统版本:14.04
- Node.js 版本(node -v):9.3.0
- NPM 版本:(npm -v):5.5.1
- Dynamoose 版本:0.8.7
amazon-dynamodb - Dynamoose - 如何在同一个密钥上查询两个 GSI?
我在发电机中有一个键,它有两个具有不同范围键的全局二级索引。像这样:
尝试使用“名称”似乎不是答案。
在构建查询时,我应该如何区分资源中同一 Key 上的两个 GSI?
编辑 - 向架构添加了额外的上下文,将答案移到了答案部分
node.js - 使用 dynamoose.js 时如何避免在外部将 aws config 设置为 env 变量
除非我通过 env 变量在外部设置它,否则我的 aws 配置不起作用
只有当我在外部设置凭据时,数据库连接才有效,
如果我不在外部设置这些,它就不起作用。例如,如果我在如下代码中设置它,它就不起作用。
我不想在任何外部变量中设置配置。有没有办法在nodejs代码中管理这个?
这些是我尝试过/考虑过的替代品
在代码中设置环境变量,这也不起作用
process.env.AWS_REGION='ap-south-1';
我读到了 dotenv 包。但建议它只用于开发而不是生产(我不确定这是否可行)
请帮我解决这个问题。如何仅在代码中管理配置?
node.js - 无服务器:尝试使用 async/await 时,dynamodb 在创建记录时出现错误
我正在尝试在 dynamodb(使用 dynamoose)中创建记录。代码是
* create 函数的输入值与我使用batchPut()尝试的相同输入是正确的,它正在工作。甚至更新对表的调用也有效。
这是我得到的错误 - 错误 - {"message":"The conditional request failed", "code":"ConditionalCheckFailedException", "statusCode":400}
这是调用函数 -
} };
我试着用谷歌搜索它,但没有找到任何合适的文件。提前致谢。