我尝试了许多在SO中给出的解决方案,但是遇到一个验证错误的麻烦: 这是我的桌子:
flyway.repair();
我已经使用putItem成功创建了项目,但是在追加到列表时遇到了麻烦:
这是我要更新的项目:
var params = {
AttributeDefinitions: [
{
AttributeName: 'USER_AUTH_ID',
AttributeType: 'N'
},
{
AttributeName: 'EMAIL',
AttributeType: 'S'
}
],
KeySchema: [
{
AttributeName: 'EMAIL',
KeyType: 'HASH'
},
{
AttributeName: 'USER_AUTH_ID',
KeyType: 'RANGE'
}
],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1
},
TableName: tableName,
StreamSpecification: {
StreamEnabled: false
}
};
;
然后我用var paramUpdateItem = {
TableName: tableName,
Key: {
'EMAIL' : {S: 'MyEmail@email.com'}
},
UpdateExpression: "SET #Y = list_append(#Y,:y)",
ExpressionAttributeNames: {
"#Y" : "COMMENT_HISTORY"
},
ExpressionAttributeValues: {
":y" : [commentToAdd]
}
}
更新。
我不断收到此错误:
null:错误:在中发现意外的键“ 0” params.ExpressionAttributeValues [':y']
我在另一个问题中读到这是由于制表符引起的,但我试图修复它,但仍然出现此错误。
任何帮助。 谢谢。
答案 0 :(得分:3)
我想不出两个选择。一个是这是一个库错误,正如您所说的那样,可能是“由于制表符引起的”,例如,请参阅此问题,声称这是空白错误,并建议解决方法:
https://github.com/aws/aws-sdk-js/issues/2546
另一个选择是您正在使用低级API(您没有显示查询的方式)。在低级API中,您不能只说{“:y”:[commentToAdd]}。您需要说的是,该列表实际上是一个列表,它的组成部分是什么类型。像{':y':{'L':[{'S','word1'},{'S','word2'}]}之类的东西。