Amazons dynamodb(通过aws sdk)有一个很好的对象映射器可以在nodejs中使用吗?

时间:2014-05-21 13:48:10

标签: node.js amazon-web-services amazon-dynamodb

也许这个问题不适用于dynamoDB,因为它不是关系型Db。 但是,我正在寻找一个好的对象映射器,它可以在nodejs和aws sdk中用于将现有的模型类映射到dynamoDB表。有没有人有这个问题/问题的经验,或者您是否使用过这样的模块/库?

6 个答案:

答案 0 :(得分:27)

如果您正在寻找架构:

如果您正在寻找将javascript对象(甚至是圆形图形)抛出到:

的东西

dyngodb对全文搜索有实验支持,而transactions也有。{/ p>

两者都基于aws-sdk。

答案 1 :(得分:6)

另外值得考虑的是简单的marshallers,它只是在dynamoDB格式和常规js对象或JSON之间进行转换。

<强> DynamoDb-数据类型
https://github.com/kayomarz/dynamodb-data-types
https://www.npmjs.com/package/dynamodb-data-types

“此实用程序有助于表示AWS DynamoDb数据类型。它将(marshalls)JavaScript数据映射到DynamoDb所需的格式。”

<强> dynamoDb-封送
https://github.com/CascadeEnergy/dynamoDb-marshaler https://www.npmjs.com/package/dynamodb-marshaler

“将健全的javascript对象(和JSON)转换为DynamoDb格式,反之亦然。” [不支持B类型。]

更新2016-06
刚发现AWS SDK现在为您执行此操作。他们的文档只是部分转换,所以我想这是最近添加的。阅读it here

但是这些marshallers仍然有用,因为在某些情况下你无法使用新的文档客户端,例如。处理dynamoDB流时。

答案 2 :(得分:2)

您也可以尝试:https://dynamoosejs.com/。它再次受到猫鼬的启发。

答案 3 :(得分:2)

如果您使用的是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类型之间的映射,并提供易于使用的流畅API。

全面披露:我是该图书馆的作者之一

答案 4 :(得分:1)

查看了https://github.com/awspilot/dynamodb-oop

上的所有帖子

它不会隐藏API,而只是以一种漂亮,流畅的方式包装它甚至承诺你注入你的版本的aws-sdk。它类似于dynamodb-data-types,但也包装了方法(不仅仅是数据类型)。

额外奖励,同一作者https://github.com/awspilot/dynamodb-sql没有使用sql包装,但我可以看到有些人可能更喜欢这样。

Dynamoose显然受到了猫鼬的启发,如果你有一个明确定义的架构和/或想要从DynamoDB细节中抽象出来,那么它是一个很好的选择。

答案 5 :(得分:0)

你见过dynasaur吗?它似乎是你正在寻找的东西,但我自己没有使用它。还有dynamodb-data-types不是ORM,但可以很容易地转换为标准JavaScript对象/从标准Ja​​vaScript对象转换。