无服务器中的 DynamoDB API

DynamoDB API in Serverless

我正在使用无服务器框架创建一个从 DynamoDB 写入和读取数据的应用程序。我关注他们official docs and look into other examples on github.

据我了解,Serverless 在底层使用 AWS SDK for NodeJS。

我注意到 DynamoDB API 无服务器和官方 AWS SDK 的区别。

  1. 方法名称。它们是不同的:在用于阅读的官方 AWS SDK 文档中,到处都有一个 getItem 方法 (link for the docs), whereas in the Serveless get method is being used (link)。

  2. 参数定义:

根据官方文档,我需要使用以下约定来创建参数:

var params = {
  Key: {
    UserId: {
      S: '123456'
    }
  },
  TableName: 'Users'
};

dynamodb.getItem(params, function(err, data) {
   ...
})

然而,Serverless 展示了一种不同的方法:

const params = {
  Key: {
    UserId: '123456'
  },
  TableName: 'Users'
}

dynamoDb.get(params, (error, result) => {}

问题:有人可以解释一下区别吗?为什么会这样?这有点令人困惑,很难理解要遵循哪个约定。谢谢!

经过几个小时的研究,我找到了原因。

Serverless 文档中显示的所有示例都使用特定的 class DocumentClient,通过省略 DynamoDB 数据类型简化 javascript 世界中的开发。

它们接受的方法和参数也不同,因此可以 send/retrieve 数据而不指定数据类型。然而,最终,DynamoDB 仍然需要类型,但所有转换都在幕后进行。