我正在尝试使用条件在 DynamoDB 上放置一个 intem,但不起作用。
我有一个用户表和一个属性 id 作为主键,属性名称必须是唯一的。
conditions := aws.String("NOT contains(email, :e_email)")
attributes := map[string]*dynamodb.AttributeValue{
":e_mail": &dynamodb.AttributeValue{
S: &user.Email,
},
}
input := &dynamodb.PutItemInput{
Item: item,
TableName: dynamoTable,
ConditionExpression: conditions,
ExpressionAttributeValues: attributes,
}
_, err = dynamo.PutItemWithContext(ctx1, input)
if err != nil {
if erro, ok := err.(awserr.Error); ok {
if erro.Code() == dynamodb.ErrCodeConditionalCheckFailedException {
log.Println("User already exists")
body, _ := json.Marshal(models.ErrUsuarioJaExiste)
resp.StatusCode = models.ErrUsuarioJaExiste.CodigoHTTP
resp.Body = string(body)
return resp
}
}
log.Println(err)
resp.StatusCode = models.ErrInterno.CodigoHTTP
body, _ := json.Marshal(models.ErrInterno)
resp.Body = string(body)
return resp
}
但我仍然可以使用相同的电子邮件添加项目
慕桂英4014372
相关分类