我正在使用无服务器框架来创建一个撰写和读取DynamoDB数据的应用程序。我遵循他们的官方文档,并在Github上研究其他示例。
据我了解,服务器在引擎盖下使用了nodejs的AWS SDK。
我注意到DynamoDB API在无服务器和官方AWS SDK中的差异。
-
方法名称。它们是不同的:在官方的AWS SDK文档中,有一个
getItem
方法(文档的链接(,而在Serveless中,get
方法在各处使用(链接(。 -
参数定义:
根据官方文档,我需要使用以下约定来创建参数:
var params = {
Key: {
UserId: {
S: '123456'
}
},
TableName: 'Users'
};
dynamodb.getItem(params, function(err, data) {
...
})
但是,无服务器显示了另一种方法:
const params = {
Key: {
UserId: '123456'
},
TableName: 'Users'
}
dynamoDb.get(params, (error, result) => {}
问题:有人可以解释区别,为什么?这有点令人困惑,很难理解要遵循的惯例。谢谢!
经过几个小时的研究,我发现了原因。
无服务器文档中显示的所有示例都使用特定类DocumentClient
,通过省略DynamoDB Datatypes来简化JavaScript世界中的开发。
他们接受的方法和参数也不同,因此可以在不指定数据类型的情况下发送/检索数据。但是,最终,DynamoDB仍然需要类型,但是所有转换都在幕后发生。