我正在尝试将消息附加到AWS DynamoDB中的空列表中。
这是我运行函数时得到的错误
无效的UpdateExpression:运算符的操作数不正确 或功能;运算符或函数:list_append,操作数:1
DynamodB中的数据结构
以下是代码:
var caseId = "1734009";
var chatMessage = { "2018-04-20T15:02:48Z":
{
"userId": "wQnUJrklzwWBDOsx83XVETSS7us2",
"message": "How are you"
}
}
var params = {
TableName : 'CHATS',
Key: {
"CASE_ID" : caseId
},
UpdateExpression : "SET CHAT_MESSAGES = list_append(:i)",
ExpressionAttributeValues : {
':i': [chatMessage],
},
ReturnValues:'UPDATED_NEW' // OTHER OPTIONS: NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW
};
documentClient.update(params, function(err, data) {
if(err) {
var message = "Chat message could not be saved, error:" + JSON.stringify(err, null, 2);
res.json({"status": "failure", "statusCode" : 400, "message": message});
} else {
next();
}
});
答案 0 :(得分:1)
list_append有两个参数,而不是一个:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html
答案 1 :(得分:1)
通过使用以下参数并参考Jason Livesay提供的AWS Docs,我能够将项目添加到空列表中。
var params = {
TableName : 'CHATS',
Key: {
"CASE_ID" : caseId
},
UpdateExpression : "SET #ri = list_append(#ri, :vals)",
ExpressionAttributeNames: {
"#ri": "CHAT_MESSAGES"
},
ExpressionAttributeValues : {
':vals': [chatMessage]
},
ReturnValues:'UPDATED_NEW' // OTHER OPTIONS: NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW
};
答案 2 :(得分:0)
看下面的例子。属性“ graph”创建为空列表,以后可以使用list_append()进行更新。请注意,我正在使用Boto3(python)更新我的dynamodb表。
dynamoTable = dynamodb.Table('abc')
dynamoTable.put_item(
Item={
''<primary_key>'': <primary_key_value>,
'First Name': 'first_name',
'Last Name': 'last_name',
'password_hash': 'password_hash',
'salt': 'salt',
'graph': [],
}
查看以下代码,将元素/消息添加到列表中:
dynamoTable = dynamodb.Table('abc')
dynamoTable.update_item(
Key={
'<primary_key>': '<primary_key_value>',
},
UpdateExpression="set #Graph = list_append(#Graph, :name)",
ExpressionAttributeNames={
'#Graph': 'graph',
},
ExpressionAttributeValues = {
':name': [# {'myObject':
{
"userId": "wQnUJrklzwWBDOsx83XVETSS7us2",
"message": "How are you"
}
#}
],
}
上面的代码将在'graph'
中将{em> map 附加到"userId" and "message"