【发布时间】:2016-10-26 11:34:37
【问题描述】:
我需要更新我的 aws-dynamo 数据库中的列表。我创建了一个带有分区键的表:电子邮件。然后我成功地将一些电子邮件 ID 插入到表中。现在我的桌子是这样的
电子邮件
manaf1@gmail.com
manaf2@gmail.com
manaf3@gmail.com
然后,我尝试使用新键“详细信息”更新表,它的值是一个列表。这是我的代码
var AWS = require("aws-sdk");
var params =
{
TableName: "manaftable1",
Key: { email: "manaf1@gmail.com" },
UpdateExpression: "set #details = list_append (#details, :detailsinput)",
ExpressionAttributeNames: {
"#details": "details"
},
ExpressionAttributeValues: {
":detailsinput":{ "id": "1","mob": "978956" }
}
};
var docClient = new AWS.DynamoDB.DocumentClient();
docClient.update(params, function (err, data) {
if (err)
console.log(JSON.stringify(err, null, 2));
else
console.log(JSON.stringify(data, null, 2));
});
但我遇到了这样的错误
{
"message": "Invalid UpdateExpression: Incorrect operand type for operator or function; operator or function: list_append, operand type: M",
"code": "ValidationException",
"time": "2016-10-26T11:04:60.756",
"requestId": "SN0NPRHDFHUKBBJHOVI0DFHHRQNSO5AEMVJFFGHF9ASFHUAAJG",
"statusCode": 400,
"retryable": false,
"retryDelay": 0
}
更新后我需要这样的回应
第 1 列:电子邮件
第 2 列:详细信息
manaf1@gmail.com | [{"id":"1","mob":"978956"},{"id":"2","mob":"767886"}]
manaf2@gmail.com |
我的代码有什么问题?
【问题讨论】:
-
您是否在架构中定义了
details?或者,您可以从 DDB 获取项目,更新它,然后使用put在 DDB 中更新它 -
我只在架构中定义关键电子邮件。
标签: node.js amazon-web-services amazon-dynamodb nosql