【发布时间】:2014-07-10 05:05:14
【问题描述】:
也许这个问题不适用于 dynamoDB,因为它不是关系数据库。 但是,我正在寻找一个好的对象映射器,它可以在 nodejs 和 aws sdk 中用于将现有模型类映射到 dynamoDB 表。有没有人有这个问题/问题的经验,或者您是否使用过这样的模块/库?
【问题讨论】:
标签: node.js amazon-web-services amazon-dynamodb
也许这个问题不适用于 dynamoDB,因为它不是关系数据库。 但是,我正在寻找一个好的对象映射器,它可以在 nodejs 和 aws sdk 中用于将现有模型类映射到 dynamoDB 表。有没有人有这个问题/问题的经验,或者您是否使用过这样的模块/库?
【问题讨论】:
标签: node.js amazon-web-services amazon-dynamodb
如果您正在寻找架构:
如果您正在寻找将 javascript 对象(甚至是圆形图)扔到的东西:
dyngodb 对全文搜索提供实验性支持,transactions 也有。
两者都基于 aws-sdk。
【讨论】:
还值得考虑的是简单的编组器,它只是在 dynamoDB 格式和常规 js 对象或 JSON 之间进行转换。
DynamoDb-数据类型
https://github.com/kayomarz/dynamodb-data-types
https://www.npmjs.com/package/dynamodb-data-types
“此实用程序有助于表示 AWS DynamoDb 数据类型。它将 JavaScript 数据映射(编组)为 DynamoDb 所需的格式。”
dynamoDb-marshaler
https://github.com/CascadeEnergy/dynamoDb-marshaler
https://www.npmjs.com/package/dynamodb-marshaler
“将健全的 javascript 对象(和 JSON)翻译成 DynamoDb 格式,反之亦然。” [不支持B型]
2016 年 6 月更新:
刚刚发现 AWS 开发工具包现在可以为您执行此操作。他们的文档只是部分转换,所以我想这是最近添加的。阅读it here。
但是这些编组器仍然有用,因为在某些情况下您无法使用新的文档客户端,例如。处理 dynamoDB 流时。
【讨论】:
你也可以试试:https://dynamoosejs.com/。它再次受到猫鼬的启发。
【讨论】:
如果您使用的是 Typescript,dynamo-easy 可能是一个不错的选择。只需在模型中添加一些装饰器并开始使用它。
import { Model, PartitionKey, DynamoStore } from '@shiftcoders/dynamo-easy'
@Model()
export class Person {
@PartitionKey()
id: string
name: string
yearOfBirth: number
}
const personStore = new DynamoStore(Person)
personStore
.scan()
.whereAttribute('yearOfBirth').equals(1958)
.exec()
.then(res => console.log('ALL items with yearOfBirth == 1958', res))
它使用 AWS DynamoDB sdk,但负责 JS 和 DynamoDB 类型之间的映射,并提供简单易用的 fluent API。
全面披露:我是这个库的作者之一
【讨论】:
查看了我登陆https://github.com/awspilot/dynamodb-oop的所有帖子后
它不会隐藏 API,而是以一种漂亮、流畅的方式将其包装起来,甚至带有 Promise,然后您注入您的 aws-sdk 版本。它类似于 dynamodb-data-types,但也封装了方法(不仅仅是数据类型)。
额外的好处,同一作者有https://github.com/awspilot/dynamodb-sql 没有使用 sql 包装器,但我可以看到有些人可能更喜欢它。
Dynamoose 显然受到 mongoose 的启发,如果您有明确定义的架构和/或希望从 DynamoDB 细节中抽象出来,这是一个不错的选择。
【讨论】:
你见过dynasaur吗?它似乎是您正在寻找的东西类型,但我自己没有使用它。还有dynamodb-data-types,它不是 ORM,但可以轻松地与标准 JavaScript 对象进行转换。
【讨论】: