我正在尝试在 DynamoDB put 中执行 ConditionExpression 以检查存储的布尔值是否为真(在此示例中,用户是否已经过验证不要运行 put),我正在使用 javascript DocumentClient SDK(感谢@shimon -tolts),代码如下:
var query = {
TableName: tableName,
Item: {
email: email,
verified: false,
verifyToken: token
},
ConditionExpression: 'attribute_exists(email) AND verified = :bool',
ExpressionAttributeValues: {
":bool":"false"
}
};
dynamodb.put(query, function(err, data){
if (err) return fn(err)
fn(null, data);
});
哪个不起作用,无论调用什么,它都无法通过条件检查。
几乎是我需要的(伪代码):
IF email already exists AND verified equals false
THEN allow PUT
IF email already exists AND verified equals true
THEN don't allow PUT
IF email does not exist
THEN allow PUT
有任何想法吗?
原文由 csilk 发布,翻译遵循 CC BY-SA 4.0 许可协议
我建议使用 DocumentClient ,因为它适用于 javascript 对象。要执行条件表达式,您必须指定 ExpressionAttributeNames 和 ExpressionAttributeValues 例如:
您可以在此处查看更多示例并 在 此处 阅读更多内容