第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DynamoDB PutItem 上的條件表達(dá)式

DynamoDB PutItem 上的條件表達(dá)式

Go
MMTTMM 2023-04-24 16:26:17
我正在嘗試使用條件在 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}但我仍然可以使用相同的電子郵件添加項目
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊

這不是條件表達(dá)式的工作方式。DynamoDB 不會為匹配的電子郵件測試表中的所有項目。它正在測試此項目是否有匹配的電子郵件。如果存在這樣的項目,您的條件表達(dá)式僅應(yīng)用于您在 put 調(diào)用中實(shí)際顯示其 ID 的項目。

請記住,PutItem 可用于插入新項,但也可用于替換現(xiàn)有項。如果不存在具有該 ID 的項目,我認(rèn)為這里確實(shí)是這種情況,因為您正在編寫一個新的 ID,那么您的條件表達(dá)式將永遠(yuǎn)不起作用。

將電子郵件作為主鍵,然后您可以使用條件表達(dá)式來測試是否存在并拒絕重復(fù)的電子郵件插入。使用帶有電子郵件屬性名稱的 attribute_not_exists 函數(shù)。

查看完整回答
反對 回復(fù) 2023-04-24
  • 1 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號