无法更新 DynamoDB 中的项目
can't update item in DynamoDB
我一直在尝试弄清楚如何更新 dynamoDB 中的项目,但没有成功。
我知道如何添加和删除项目但不知道如何更新。
这是我的代码:
dynamoDB.updateItem({
"TableName": "mytable",
"Key": {
"thing_ID": {"S": "0000"}
},
"UpdateExpression": "SET",
"ExpressionAttributeNames": {
"SessionID": ""
},
"ExpressionAttributeValues": {
"SessionID": {
"S": "maybe this works",
}
}
})
您似乎正试图通过在表达式中使用 Expression, and in this case, your UpdateExpression
is incorrect. Both the ExpressionAttributeNames
and ExpressionAttributeValues
are used for placeholder substitution 来更新项目。
如果你想为一个项目设置一个属性,我想你的代码应该是这样的:
dynamoDB.updateItem({
"TableName" : "exampleTable",
"Key" : {
"hashAttributeName" : {
"S" : "thing_ID"
}
},
"UpdateExpression" : "SET #attrName =:attrValue",
"ExpressionAttributeNames" : {
"#attrName" : "SessionID"
},
"ExpressionAttributeValues" : {
":attrValue" : {
"S" : "maybe this works"
}
}
});
这将更新如下所示的项目:
{
"Item":{
"hashAttributeName":"thing_ID"
}
}
为此:
{
"Item":{
"hashAttributeName" : "thing_ID",
"SessionID" : "maybe this works"
}
}
这是一个使用 AWS SDK for JavaScript v2.1.33 的示例。
完整的例子在这里:
https://github.com/mayosmith/HelloDynamoDB/blob/master/HelloDynamoDB.html
/*
-----------------------------------------------------------------
AWS configure
Note: this is a simple experiement for demonstration
purposes only. Replace the keys below with your own.
Do not include the secret key in an actual production
environment, because, then, it wont be secret anymore...
-----------------------------------------------------------------
*/
AWS.config.update({accessKeyId: 'AKIAJUPWRIYYQGDB6AFA', secretAccessKey: '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'});
// Configure the region
AWS.config.region = 'us-west-2'; //us-west-2 is Oregon
//create the ddb object
var ddb = new AWS.DynamoDB();
/*
-----------------------------------------------------------------
Update the Table
-----------------------------------------------------------------
*/
//update the table with this data
var params = {
Key: {
name: {S: 'John Mayo-Smith'},
city: {S: 'New York'}
},
AttributeUpdates: {
food: {
Action: 'PUT',
Value: {S: 'chocolate'}
}
},
TableName: 'sampletable',
ReturnValues: 'ALL_NEW'
};
//update the table
update();
/*
-----------------------------------------------------------------
Get Item from the Table
-----------------------------------------------------------------
*/
//attribute to read
var readparams = {
Key: {
name: {S: 'John Mayo-Smith'},
city: {S: 'New York'}
},
AttributesToGet: ['food'],
TableName: 'sampletable'
};
//get the item
read();
/*
-----------------------------------------------------------------
function update()
Description: Calls updateItem which is part of the AWS Javascript
SDK.
Returns: JSON object (the object is stringifyed so we can see
what's going on in the javascript console)
-----------------------------------------------------------------
*/
function update(){
ddb.updateItem(params, function(err, data) {
if (err) { return console.log(err); }
console.log("We updated the table with this: " + JSON.stringify(data));
});
}
/*
-----------------------------------------------------------------
function read()
Description: Calls getItem which is part of the AWS Javascript
SDK.
Returns: JSON object (the object is stringifyed so we can see
what's going on in the javascript console)
-----------------------------------------------------------------
*/
function read(){
ddb.getItem(readparams, function(err, data) {
if (err) { return console.log(err); }
console.log(": " + data);
console.log("John's favorite food is: "+ JSON.stringify(data.Item.food.S)); // print the item data
});
}
下面的代码对我有用,试一次
var item = {"endTime": "7pm", "imageName": "7abcd", "startTime": "7pm"};
dynamo.updateItem({
TableName:'tableName',
Key:{"primaryKey":"primaryKeyValue"},
AttributeUpdates: { images: { Action: "ADD", Value: item } }},function(err, data) {
if (err)
console.log(err);
else
console.log(data)
});
我一直在尝试弄清楚如何更新 dynamoDB 中的项目,但没有成功。
我知道如何添加和删除项目但不知道如何更新。
这是我的代码:
dynamoDB.updateItem({
"TableName": "mytable",
"Key": {
"thing_ID": {"S": "0000"}
},
"UpdateExpression": "SET",
"ExpressionAttributeNames": {
"SessionID": ""
},
"ExpressionAttributeValues": {
"SessionID": {
"S": "maybe this works",
}
}
})
您似乎正试图通过在表达式中使用 Expression, and in this case, your UpdateExpression
is incorrect. Both the ExpressionAttributeNames
and ExpressionAttributeValues
are used for placeholder substitution 来更新项目。
如果你想为一个项目设置一个属性,我想你的代码应该是这样的:
dynamoDB.updateItem({
"TableName" : "exampleTable",
"Key" : {
"hashAttributeName" : {
"S" : "thing_ID"
}
},
"UpdateExpression" : "SET #attrName =:attrValue",
"ExpressionAttributeNames" : {
"#attrName" : "SessionID"
},
"ExpressionAttributeValues" : {
":attrValue" : {
"S" : "maybe this works"
}
}
});
这将更新如下所示的项目:
{
"Item":{
"hashAttributeName":"thing_ID"
}
}
为此:
{
"Item":{
"hashAttributeName" : "thing_ID",
"SessionID" : "maybe this works"
}
}
这是一个使用 AWS SDK for JavaScript v2.1.33 的示例。
完整的例子在这里: https://github.com/mayosmith/HelloDynamoDB/blob/master/HelloDynamoDB.html
/*
-----------------------------------------------------------------
AWS configure
Note: this is a simple experiement for demonstration
purposes only. Replace the keys below with your own.
Do not include the secret key in an actual production
environment, because, then, it wont be secret anymore...
-----------------------------------------------------------------
*/
AWS.config.update({accessKeyId: 'AKIAJUPWRIYYQGDB6AFA', secretAccessKey: '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'});
// Configure the region
AWS.config.region = 'us-west-2'; //us-west-2 is Oregon
//create the ddb object
var ddb = new AWS.DynamoDB();
/*
-----------------------------------------------------------------
Update the Table
-----------------------------------------------------------------
*/
//update the table with this data
var params = {
Key: {
name: {S: 'John Mayo-Smith'},
city: {S: 'New York'}
},
AttributeUpdates: {
food: {
Action: 'PUT',
Value: {S: 'chocolate'}
}
},
TableName: 'sampletable',
ReturnValues: 'ALL_NEW'
};
//update the table
update();
/*
-----------------------------------------------------------------
Get Item from the Table
-----------------------------------------------------------------
*/
//attribute to read
var readparams = {
Key: {
name: {S: 'John Mayo-Smith'},
city: {S: 'New York'}
},
AttributesToGet: ['food'],
TableName: 'sampletable'
};
//get the item
read();
/*
-----------------------------------------------------------------
function update()
Description: Calls updateItem which is part of the AWS Javascript
SDK.
Returns: JSON object (the object is stringifyed so we can see
what's going on in the javascript console)
-----------------------------------------------------------------
*/
function update(){
ddb.updateItem(params, function(err, data) {
if (err) { return console.log(err); }
console.log("We updated the table with this: " + JSON.stringify(data));
});
}
/*
-----------------------------------------------------------------
function read()
Description: Calls getItem which is part of the AWS Javascript
SDK.
Returns: JSON object (the object is stringifyed so we can see
what's going on in the javascript console)
-----------------------------------------------------------------
*/
function read(){
ddb.getItem(readparams, function(err, data) {
if (err) { return console.log(err); }
console.log(": " + data);
console.log("John's favorite food is: "+ JSON.stringify(data.Item.food.S)); // print the item data
});
}
下面的代码对我有用,试一次
var item = {"endTime": "7pm", "imageName": "7abcd", "startTime": "7pm"};
dynamo.updateItem({
TableName:'tableName',
Key:{"primaryKey":"primaryKeyValue"},
AttributeUpdates: { images: { Action: "ADD", Value: item } }},function(err, data) {
if (err)
console.log(err);
else
console.log(data)
});