gpt4 book ai didi

node.js - 将变量作为 DynamoDB putItem JSON 数组中的键名称传递

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:44 25 4
gpt4 key购买 nike

我有一个简单的 JSON 数组,我正在尝试使用变量设置映射键。该数组使用 DynamoDB 的映射功能,第一个名为“hours”的映射包含一个嵌套映射,我希望该映射的键值为 15。但是,因为我希望该键根据一天中的时间而变化,所以我传递了一个变量到反射(reflect)这一点的 JSON 数组嵌套映射键中。

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

问题是 DynamoDB 实际上运行 putItem 时将变量 hour 更改为字符串“hour”,并在操作期间忽略设置变量的值。关于如何将变量值传递给键名有什么想法吗?

var hour = "15";

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

最佳答案

params中使用ExpressionAttributeNames:ExpressionAttributeValues:。以下内容(使用 documentClient 自动转换 javascript 类型)有望为您指明正确的方向,但您必须决定是否要添加新的 #hr 嵌套字段、删除旧的嵌套字段等,而且,只有在项目中开始存在 #hrs map 时,这才有效 - 即使作为空 map 。最后,如果现有的 #hr 嵌套字段已经存在,这将覆盖它们;如果不存在,则创建新的。再次强调,不确定您是否绝对需要。

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

我希望这会有所帮助。

关于node.js - 将变量作为 DynamoDB putItem JSON 数组中的键名称传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36361111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com