gpt4 book ai didi

node.js 将参数传递给 DynamoDB updateItem 方法

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

我想编写一个函数来更新 dynamodb 中给定的参数。

例如,在 dynamodb 表中,每个 userId 都是键,我的值如下


{
“类别名称”:“a”,
“技能状态”:“a”,
“跳过计数”:1,
"userId": "amzn1.ask.account.xxx"
}

我想设置 "categoryname": "b" 尽管可能有 10-15 个这样的字段,所以我不想对字段名称进行硬编码。

function (userId,itemToUpdate,itemValue,callback) {


var updateExpressionString = "SET #"+itemToUpdate+" =:val1";
var expressionAtt = '#'+itemToUpdate + '';

console.log(updateExpressionString)
console.log(expressionAtt)

this.dynamodb.updateItem({
TableName: constants.dynamoDBDetailTableName,
Key: {
userId: {
S: userId
}
},
UpdateExpression: updateExpressionString,
ExpressionAttributeNames : {
expressionAtt : itemToUpdate
},
ExpressionAttributeValues : {
':val1': {'S':itemValue}
}
}, function (err, data) {
if (err) {
console.log(err)
console.log('Error ')
} else if (data.Item === undefined) {

}else {
console.log(data)
}
});
}

在 ExpressionAttributeNames 中:

{ ValidationException:ExpressionAttributeNames 包含无效键:语法错误;键:“表达式Att”

这显然会引发错误,认为 expressionAtt 是键,而它是局部变量。

我是node.js新手,如何将局部变量传递给ExpressionAttributeNamesExpressionAttributeValues

最佳答案

处理此问题的一种方法是将对象从 updateItem 中取出,将其放入自己的变量中,如下所示:

var item = {
TableName: constants.dynamoDBDetailTableName,
Key: {
userId: {
S: userId
}
},
UpdateExpression: updateExpressionString,
ExpressionAttributeNames: {},
ExpressionAttributeValue: {
':val1': {'S': itemValue}
}
};

item.ExpressionAttributeNames[expressionAtt] = itemToUpdate;

this.dynamodb.updateItem(item);

我相信这会解决你的问题

关于node.js 将参数传递给 DynamoDB updateItem 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351799/

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