我想了解AWS SDK DynamoDB客户端和DynamoDB DocumentClient之间的区别?在哪种情况下应该使用DynamoDB客户端而不是DocumentClient?
const dynamoClient = new AWS.DynamoDB.DocumentClient();
vs
const dynamo = new AWS.DynamoDB();
我想了解AWS SDK DynamoDB客户端和DynamoDB DocumentClient之间的区别?在哪种情况下应该使用DynamoDB客户端而不是DocumentClient?
const dynamoClient = new AWS.DynamoDB.DocumentClient();
vs
const dynamo = new AWS.DynamoDB();
我认为最好的方法是通过比较两个执行相同操作的代码示例来回答这个问题。
以下是使用DynamoDB客户端放置项的方法:
var params = {
Item: {
"AlbumTitle": {
S: "Somewhat Famous"
},
"Artist": {
S: "No One You Know"
},
"SongTitle": {
S: "Call Me Today"
}
},
TableName: "Music"
};
dynamodb.putItem(params, function (err, data) {
if (err) console.log(err)
else console.log(data);
});
以下是如何使用 DocumentClient API 放置相同项的方法:
var params = {
Item: {
"AlbumTitle": "Somewhat Famous",
"Artist": "No One You Know",
"SongTitle": "Call Me Today"
},
TableName: "Music"
};
var documentClient = new AWS.DynamoDB.DocumentClient();
documentClient.put(params, function (err, data) {
if (err) console.log(err);
else console.log(data);
});
正如你在DocumentClient
中所看到的,Item
的指定方式更加自然。在所有其他更新DDB操作(update()
, delete()
)和读取操作(get()
, query()
, scan()
)返回的项中也存在类似的差异。
它基本上是使用SDK中调用dynamoDB的简单方式,并且还将带注释的响应数据转换为本机JS类型。通常只有在执行数据库更"特殊"的操作(例如创建表等)时才应使用常规DynamoDB客户端。这些通常超出了CRUD范围。使用文档客户端抽象化可以更轻松地使用AWS SDK for JavaScript读写Amazon DynamoDB中的数据。现在,您可以使用本机JavaScript对象而不必将它们注释为AttributeValue类型。
':age': 21
来指定属性值,而在普通客户端中,需要使用':age': {'N': '21'}
来指定。需要注意的是,在普通客户端中,不仅需要告诉客户端该属性的类型(数字为'N'),还需要将值本身(21)作为字符串进行指示,尽管它是一个数值类型。 - jarmod