【问题标题】: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 表。有没有人有这个问题/问题的经验,或者您是否使用过这样的模块/库?

【问题讨论】:

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


    【解决方案1】:

    如果您正在寻找架构:

    如果您正在寻找将 javascript 对象(甚至是圆形图)扔到的东西:

    dyngodb 对全文搜索提供实验性支持,transactions 也有。

    两者都基于 aws-sdk。

    【讨论】:

      【解决方案2】:

      还值得考虑的是简单的编组器,它只是在 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 流时。

      【讨论】:

      • 感谢您的回答。我正在使用 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 对象进行转换。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-10-17
              • 1970-01-01
              • 1970-01-01
              • 2014-04-29
              • 2017-03-08
              • 1970-01-01
              • 2013-07-14
              • 1970-01-01
              相关资源
              最近更新 更多