首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在DynamoDB putItem JSON数组中将变量作为键名传递

在DynamoDB putItem JSON数组中将变量作为键名传递
EN

Stack Overflow用户
提问于 2016-04-02 00:17:31
回答 1查看 1.5K关注 0票数 1

我有一个简单的JSON数组,我正在尝试使用一个变量来设置一个映射键。该数组使用DynamoDB的映射功能,第一个名为‘hour’的映射包含一个嵌套映射,我希望该映射的键值为15。但是,由于我希望该键值随时间的不同而变化,因此我将一个变量传递到JSON数组的嵌套映射键中,以反映这一点。

对于下面的代码,我将其硬编码为15,以简化问题。

问题是DynamoDB确实运行了putItem,它将变量hour更改为字符串"hour“,并在操作过程中忽略了set变量的值。关于如何将变量值传递给键名有什么想法吗?

代码语言:javascript
复制
var hour = "15";

"hours" : {"M" : {
    hour : {"M" : { //The hour variable is used as a key
          "action1" : {"N" : "1"},
          "action2" : {"N" : "1"}
           }
     }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2016-10-19 17:53:03

params中使用ExpressionAttributeNames:ExpressionAttributeValues:。下面(使用documentClient自动转换javascript类型)将有望为您指明正确的方向,但您必须决定是否要添加新的#hr嵌套字段、删除旧的字段等,而且,仅当#hrs映射一开始存在于项目中时才有效--即使是空映射。最后,这将覆盖现有的#hr嵌套字段,如果它们已经存在,或者如果它们不存在,则创建新的嵌套字段。

代码语言:javascript
复制
var hour = 15; //or whatever number you need
var dynamoDBdc = new AWS.DynamoDB.DocumentClient();
var params = {
        TableName:                 <yourtablename>,
        Key:                       <yourkey>,
        UpdateExpression:          "SET #hrs.#hr = :value",
        ExpressionAttributeNames:  {"#hrs": "hours", "#hr": hour.toString()},
        ExpressionAttributeValues: {":value": {"action1": 1, "action2": 2}},
        ReturnValues:              "ALL_NEW" //or whatever you want here
    };
dynamoDBdc.update(params, function(err, data) {
    if(err) {
        //handle it
    }
    else {
        //your subsequent code
    }
}

更多信息可在此处找到:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html#ExpressionAttributeNames

这里:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html

我希望这能帮到你。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36361111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档