javascript - 在 javascript 中更新 DynamoDB 中包含连字符或破折号 (-) 的属性

标签 javascript node.js amazon-dynamodb


在 dynamoDB 中,我有一个表,其中包含用连字符连接的属性。 (例如名字)

现在我想使用 javascript 更新它们。 到目前为止,这是我的代码:

//create UpdateExpression and ExpressionAttributeValues
    let updateExpression = "set ";
    let expressionAttributeValues ={};
    if (e.firstName !== null){
        updateExpression = updateExpression + " "+ 'first-name'+" = :f,";
        expressionAttributeValues[":f"] = e.firstName;
    }

    let table = "tableName";
    let bpNumber = e.bpNumber;
    let params = {
        TableName: table,
        Key: {
            "bpNumber": bpNumber
        },
        UpdateExpression: updateExpression,
          ExpressionAttributeValues: expressionAttributeValues,
          ReturnValues:"UPDATED_NEW"

    };

    console.log("Updating the item...");
      docClient.update(params, function(err, data) {
          if (err) {
              console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
          } else {
              console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
          }
      });

但是这会给我带来这个错误:

Unable to update item. Error JSON: {
  "message": "Invalid UpdateExpression: Syntax error; token: \"-\", near: \"first-name\""

有什么办法解决这个问题吗?
感谢您的帮助:)

最佳答案

当您使用包含保留字、空格或特殊字符的属性时,您必须使用占位符。看看documentation .

updateExpression 中,您可以使用 #fn 占位符代替 first-name,然后定义 ExpressionAttributeNames:

ExpressionAttributeNames: {
    "#fn":"first-name"
}

关于javascript - 在 javascript 中更新 DynamoDB 中包含连字符或破折号 (-) 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39348520/

相关文章:

node.js - 如何创建作业以将Elasticsearch索引中的所有文档作为数据流处理?

java - 使用 dynamodb 映射器将属性投影到索引

javascript - 等待递归函数时获取未定义的结果

javascript - 访问自执行函数

javascript - AngularJs 应用程序中的嵌套超时

javascript - 在 KUE Node js 中更新作业状态

javascript - 带有 NodeJS GET 请求的 AngularJS 失败 - "Access-Control-Allow-Headers is not allowed by Access-Control-Allow-Headers"

java - 使用 DynamoDB 处理时间序列数据并实现可视化目标

node.js - DynamoDB,使用 AWS Lambda(NodeJS 运行时)映射值的动态原子更新

javascript - 一个对象怎么可能是不可修改的呢?