AWS开发工具包DynamoDB客户端和DocumentClient之间的区别?

Thi*_*age 6 javascript amazon-web-services amazon-dynamodb aws-sdk

我想知道AWS开发工具包DynamoDB客户端和DynamoDB DocumentClient之间的区别吗?在哪种用例中,我们应该在DocumentClient上使用DynamoDB客户端?

const dynamoClient = new AWS.DynamoDB.DocumentClient();

vs 

const dynamo = new AWS.DynamoDB();

Run Code Online (Sandbox Code Playgroud)

Ita*_*man 6

我认为这可以通过比较两个做相同事情的代码样本来最好地解决。

这是使用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);           
});
Run Code Online (Sandbox Code Playgroud)

这是使用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);
});
Run Code Online (Sandbox Code Playgroud)

正如你可以在看DocumentClientItem是一个更自然的方式规定。类似的分歧在所有其他操作存在该更新DDB( ,update()),delete()并从读操作返回的项目(get()query()scan())。

  • 虽然此答案比较了两个 SDK,但它没有回答/解释哪个 SDK 何时使用。显然,更简单的方法是正确的选择,但为什么存在更复杂的选项呢?是否存在比更简单的方案更好的情况? (6认同)

Sha*_*aho 5

根据DocumentClient 的公告

文档客户端抽象使使用适用于JavaScript的AWS开发工具包更轻松地向Amazon DynamoDB读写数据。现在,您可以使用本机JavaScript对象,而无需将其注释为AttributeValue类型。

从本质上讲,这是在SDK中调用dynamoDB的一种更简单的方法,并且还将带注释的响应数据转换为本地JS类型。通常,在数据库上执行更多“特殊”操作(如创建表等)时,仅应使用常规DynamoDB客户端。这通常在CRUD范围之外。

  • 一个具体的例子是能够通过DocumentClient指示诸如'':age':21'的属性值,而您必须向常规客户端指示'':age':{'N':'21'}`。请注意,在常规客户端情况下,您不仅必须告诉客户端属性的类型(数字为“ N”),而且还必须将值本身(21)表示为字符串,即使它是一个字符串。数值。 (3认同)