- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 NodeJS 的 aws-sdk 并尝试进行更新,以便在该项目不存在时抛出错误。我正在使用 Expression API 而不是旧版 API。这是我不适合我的人为示例。
client.update({
TableName: 'User',
Key: {'_id': '10'},
UpdateExpression: 'SET username = :user, password = :pword',
ConditionalExpression: 'attribute_exists(#idKey) AND #idKey = :idVal',
ExpressionAttributeNames: {
'#idKey': '_id'
},
ExpressionAttributeValues: {
':idVal': '10',
':user': 'user10',
':pword': 'password10'
}}, function(err, data){
if(err) console.log(err);
else console.log(data);
});
ValidationException:表达式中未使用的 ExpressionAttributeNames 中提供的值:键:{#idKey}
我尝试了各种其他 ConditionalExpressions,既使用属性名称又将实际值插入到表达式中。我开始认为这是一个错误。将遗留的 Expected->Exists 与遗留的 AttributeUpdate 一起使用是可行的,但我无法使用表达式演示此功能。
最佳答案
您已经使用 UpdateItemRequest 的 Key 参数缩小到 _id=10 的特定项目。如果某个项目不存在,则无法将 UpdateItem 调用设置为键的特定值。因此,只需要ConditionExpression中的attribute_exists(#idKey)
即可。
以下代码引发您想要的行为(我必须将表名更改为 Images 并将主键更改为 Id 以匹配 DynamoDB Local Shell 教程的内容。
var params = {
TableName: 'Image',
Key: { // The primary key of the item (a map of attribute name to AttributeValue)
'_id': 'dynamodb.png'
},
UpdateExpression: 'SET username = :user, password = :pword',
ConditionExpression: 'attribute_exists(#id)',
ExpressionAttributeValues: {
':user': 'user10',
':pword': 'password10'
},
ExpressionAttributeNames: {
'#id': '_id'
},
ReturnValues: 'ALL_NEW'
};
docClient.update(params, function(err, data) {
if (err) ppJson(err); // an error occurred
else ppJson(data); // successful response
});
提醒一下,请不要在这里发布任何真实的密码数据:)
关于node.js - DynamoDB ConditionalExpression 无法识别属性名称或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34793124/
给定条件表达式 cE = ConditionalExpression[ Value, Condition ]如何提取 cE 的条件? 我尝试建立索引,但这没有帮助。 最佳答案 也许提供一个可以在更复杂
在 Java 8 规范中有以下 syntax description of the conditional operator ?: : ConditionalExpression: Condition
我正在使用 NodeJS 的 aws-sdk 并尝试进行更新,以便在该项目不存在时抛出错误。我正在使用 Expression API 而不是旧版 API。这是我不适合我的人为示例。 client.up
引自ECMAScript Language Specification The grammar for a ConditionalExpression in ECMAScript is a littl
我正在尝试让表达式树有条件地评估为字符串。 到目前为止,这是我的代码: IQueryable myCategories = DataUtil.Categories.AsQueryable(); Par
我是一名优秀的程序员,十分优秀!