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