亚马逊 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-dyngodb

dyngodb 对全文搜索提供实验性支持,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 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

DynamoDB跨区域复制AWS Java SDK

Railo 会话存储在 AWS 上使用 DynamoDB

如何使用 AWS JavaScript SDK (dynamoDB) 处理 UnprocessedItems?

使用go在dynamodb中创建项目

使用 aws sdk javascript 禁用 dynamodb 流

是否可以在亚马逊 dynamodb 中更新哈希键