我有一个代码正在更新现有的AWS DynamoDb项目,
我正在使用AWS DynamoDb SDK的更新方法,
更新项目时出现错误-
{ ValidationException: ExpressionAttributeValues contains invalid key: Syntax error; key: "tamt"
message: 'ExpressionAttributeValues contains invalid key: Syntax error; key: "tamt"',
code: 'ValidationException',
statusCode: 400,
retryable: false,
以下是我的代码-
module.exports.updateCart = async (constants, connection, requestBody) => {
let table = constants.tables.user_cart;
let params = {
TableName: table,
Key:{
"cart_id": requestBody.cart_id
},
UpdateExpression: "set currency = :curr, product_type = :ptype, total_amount = :tamt,"
+"total_quantity = :tqty, created_date = :cdate, expiry = :exp, items = :items",
ExpressionAttributeValues:{
"curr": requestBody.currency,
"ptype": requestBody.product_type,
"tamt": requestBody.total_amount,
"tqty": requestBody.total_quantity,
"cdate": requestBody.created_date,
"exp": requestBody.expiry,
"items" : requestBody.items
},
ReturnValues:"UPDATED_NEW"
};
console.log("Params => \n", params);
let update = util.promisify(connection.update).bind(connection);
let results = await update(params);
return results;
}
以下是Params的控制台日志-
{
TableName: 'someTable',
Key: {
cart_id: 'someId'
},
UpdateExpression: 'set currency = :curr, product_type = :ptype, total_amount = :tamt, total_quantity = :tqty, created_date = :cdate, expiry = :exp, items = :items',
ExpressionAttributeValues: {
curr: 'USD',
ptype: 'SPECIAL',
tamt: 50,
tqty: 1,
cdate: 1558499016,
exp: 1558499016,
items: items: [{
name: 'someName',
amount: 50,
quantity: 1,
category: 'some Category'
}]
},
ReturnValues: 'UPDATED_NEW'
}
RequestBody-
{
product_type: 'SPECIAL',
user_id: 1234,
total_amount: 50,
total_quantity: 1,
currency: 'USD',
items: [{
name: 'someName',
amount: 50,
quantity: 1,
category: 'some Category'
}],
created_date: 1558499016,
expiry: 1558499016,
cart_id: 'someId'
}
我再次检查了一下,表上的total_amount字段是数字类型,
可能是什么问题?
答案 0 :(得分:1)
ExpressionAttributeValues
中的键应以:
开头
ExpressionAttributeValues:{
":curr": requestBody.currency,
":ptype": requestBody.product_type,
":tamt": requestBody.total_amount,
":tqty": requestBody.total_quantity,
":cdate": requestBody.created_date,
":exp": requestBody.expiry,
":items" : requestBody.items
},