亚马逊 dynamodb(通过 aws sdk)是不是有一个很好的对象映射器,可以在 nodejs 中使用?
Posted
技术标签:
【中文标题】亚马逊 dynamodb(通过 aws sdk)是不是有一个很好的对象映射器,可以在 nodejs 中使用?【英文标题】:Is there a good object mapper for Amazons dynamodb(through aws sdk) which can be used in nodejs?亚马逊 dynamodb(通过 aws sdk)是否有一个很好的对象映射器,可以在 nodejs 中使用? 【发布时间】:2014-07-10 05:05:14 【问题描述】:也许这个问题不适用于 dynamoDB,因为它不是关系数据库。 但是,我正在寻找一个好的对象映射器,它可以在 nodejs 和 aws sdk 中用于将现有模型类映射到 dynamoDB 表。有没有人有这个问题/问题的经验,或者您是否使用过这样的模块/库?
【问题讨论】:
【参考方案1】:如果您正在寻找架构:
https://github.com/clarkie/dynogels(支持forked from vogels which has been abandoned) https://github.com/automategreen/dynamoose(灵感来自 Mongoose)如果您正在寻找将 javascript 对象(甚至是圆形图)扔到的东西:
https://github.com/aaaristo/dyngodb(阿尔法) https://github.com/aaaristo/angular-gson-express-dyngodbdyngodb 对全文搜索提供实验性支持,transactions 也有。
两者都基于 aws-sdk。
【讨论】:
【参考方案2】:还值得考虑的是简单的编组器,它只是在 dynamoDB 格式和常规 js 对象或 JSON 之间进行转换。
DynamoDb-数据类型https://github.com/kayomarz/dynamodb-data-typeshttps://www.npmjs.com/package/dynamodb-data-types
“此实用程序有助于表示 AWS DynamoDb 数据类型。它将 JavaScript 数据映射(编组)为 DynamoDb 所需的格式。”
dynamoDb-marshalerhttps://github.com/CascadeEnergy/dynamoDb-marshaler https://www.npmjs.com/package/dynamodb-marshaler
“将健全的 javascript 对象(和 JSON)翻译成 DynamoDb 格式,反之亦然。” [不支持B型]
2016 年 6 月更新: 刚刚发现 AWS 开发工具包现在可以为您执行此操作。他们的文档只是部分转换,所以我想这是最近添加的。阅读it here。
但是这些编组器仍然有用,因为在某些情况下您无法使用新的文档客户端,例如。处理 dynamoDB 流时。
【讨论】:
感谢您的回答。我正在使用 dynamoDB 流,目前它们在触发我的 Lambda 函数时必须转换为 javascript 或 JSON 对象。 感谢2016-06 更新,真的很棒!【参考方案3】:你也可以试试:https://dynamoosejs.com/。它再次受到猫鼬的启发。
【讨论】:
【参考方案4】:如果您使用的是 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。
全面披露:我是这个库的作者之一
【讨论】:
【参考方案5】:查看了我登陆https://github.com/awspilot/dynamodb-oop的所有帖子后
它不会隐藏 API,而是以一种漂亮、流畅的方式将其包装起来,甚至带有 Promise,然后您注入您的 aws-sdk 版本。它类似于 dynamodb-data-types,但也封装了方法(不仅仅是数据类型)。
额外的好处,同一作者有https://github.com/awspilot/dynamodb-sql 没有使用 sql 包装器,但我可以看到有些人可能更喜欢它。
Dynamoose 显然受到 mongoose 的启发,如果您有明确定义的架构和/或希望从 DynamoDB 细节中抽象出来,这是一个不错的选择。
【讨论】:
【参考方案6】:你见过dynasaur吗?它似乎是您正在寻找的东西类型,但我自己没有使用它。还有dynamodb-data-types,它不是 ORM,但可以轻松地与标准 JavaScript 对象进行转换。
【讨论】:
以上是关于亚马逊 dynamodb(通过 aws sdk)是不是有一个很好的对象映射器,可以在 nodejs 中使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS JavaScript SDK (dynamoDB) 处理 UnprocessedItems?