javascript - 更新 DynamoDB 中的列表

标签 javascript node.js amazon-dynamodb

我已经尝试了 SO 中提供的多种解决方案,但遇到了一个验证错误: 这是我的 table :

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
    }
};

我已经使用 putItem 成功地创建了项目,但是在附加到列表时遇到了问题:

这是我要更新的项目:

var paramUpdateItem = {
    TableName: tableName,
    Key: {
        'EMAIL' : {S: 'MyEmail@email.com'}
    },
    UpdateExpression: "SET #Y = list_append(#Y,:y)",
    ExpressionAttributeNames: {
        "#Y" : "COMMENT_HISTORY"
    },
    ExpressionAttributeValues: {
        ":y" : [commentToAdd]
    }
}

;

然后我使用 updateItem 进行更新。

我一直收到这个错误:

null: Error: Unexpected key '0' found in params.ExpressionAttributeValues[':y']

我在另一个问题中读到这是由于制表符引起的,但我已尝试修复它但仍然出现此错误。

任何帮助。 谢谢。

最佳答案

我想不出两个选项。一个是这是一个库错误,正如您所说,它可能是“由于制表符”,例如,请参阅此问题声称这是一个带有空格的错误并建议解决方法:

https://github.com/aws/aws-sdk-js/issues/2546

另一种选择是您使用的是低级 API(您没有说明您是如何进行查询的)。在低级 API 中,您不能只说 {":y": [commentToAdd]}。你要说这个列表,其实就是一个列表,它的组成部分是什么类型。类似于 {':y': {'L': [{'S', 'word1'}, {'S', 'word2'} ] }。

关于javascript - 更新 DynamoDB 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56721506/

相关文章:

javascript - 了解未定义错误的 'parentNode'

node.js - 使用 SSL 托管多个 node.js 站点

amazon-dynamodb - 如何使用无服务器框架为多个环境配置 DynamoDB ProvisionedThroughput

amazon-web-services - 如何通过从 CloudFormation 中删除全局二级索引来将其从 DynamoDb 中删除?

amazon-web-services - 无法在 DynamoDB AWS 控制台中搜索嵌套属性

javascript - 在尝试使用 (Date.now - Date) 方程计算年龄时更改 asp :textbox text using jquery. js

javascript - Google API 不会翻译外文字母。

javascript - Jest + react 测试库 : Warning update was not wrapped in act()

node.js - fish shell nvm 告诉我 node 和 npm 是 "currently not installed"但它们是

JavaScript 函数链式组合