【问题标题】:How to remove last element in set in dynamo?如何删除发电机组中的最后一个元素?
【发布时间】:2019-03-26 23:26:25
【问题描述】:

我使用 dynamoDB 文档客户端创建了一个集合。我可以删除该集合中的项目,但是当我删除该集合中的最后一个元素时,在我发布新帖子之前什么都不会返回。然后显示所有其他数据。

    const params = {
      TableName: 'beta-user-' + process.env.NODE_ENV,
      Key: {
        username: request.username
      },
      UpdateExpression: "DELETE #features :feature",
      ExpressionAttributeNames: { "#features" : "features" },
      ExpressionAttributeValues: { ":feature": dynamodb.createSet([request.feature]) },
      ReturnValues: "NONE"
    };

我这样称呼它

const dynamoPromise = dynamodb.update(params).promise(); return await dynamoPromise.then(result => { // stuff })

UpdateExpression 我不认为是错的 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.DELETE

我相信问题出在ExpressionAttributeValues 如果我删除 dynamodb.createSet 我收到很多验证错误。

当我向应用程序发出获取请求时,我得到了

{
    "message": [
        {
            "username": "x",
            "feature": [
                "blah",
                "test"
            ]
        },
        {
            "username": "z",
            "feature": [
                "blah"
            ]
        },
}

我提出删除请求并从用户名 x 中删除功能 test。这有效并返回相同的响应减去test 功能。我提出另一个删除请求以删除 blah。但是当我发出get 请求时,Blah 被删除:

{
    "message": {}
}

当我向该特定用户发布新帖子时,将返回其他数据。

编辑:

我认为这个问题可能是由于发电机不喜欢空集

【问题讨论】:

    标签: node.js amazon-dynamodb serverless-framework


    【解决方案1】:

    问题在于我的 get 请求中的 return 声明。我假设一旦功能被删除,记录就会被删除。我试图在一个没有特征的对象上返回特征,因此,它出错了并且没有返回任何东西。

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2012-01-05
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多