Aceasta postare a fost scrisa de Hajime Hayano.
Versiunea v1.11.0 a AWS SDK for Go adauga un nou pachet de expresii care va permite sa creati Amazon DynamoDB Expressions folosind constructori tipizati static. Pachetul de expresii abstractizeaza detaliile de nivel scazut ale utilizarii expresiilor DynamoDB si simplifica procesul de utilizare a expresiilor DynamoDB in operatiile DynamoDB. In aceasta postare de blog, va explicam cum sa utilizati pachetul de expresii.
In versiunile anterioare ale AWS SDK for Go, a trebuit sa declarati in mod explicit campurile membre ale structurilor de intrare DynamoDB Operation, precum QueryInput si UpdateItemInput. Asta a insemnat ca sintaxa si regulile din DynamoDB Expressions depindeau de dvs. sa va dati seama. Scopul pachetului de expresii este de a crea siruri de expresii DynamoDB formatate sub capota, simplificand astfel procesul de utilizare a Expresiilor DynamoDB. Urmatorul exemplu arata verozitatea de a scrie expresii DynamoDB manual.
input: = & dynamodb.ScanInput {ExpressionAttributeNames: map [string] * string {“#AT”: aws.String (“AlbumTitle”), “#ST”: aws.String (“SongTitle”),}, ExpressionAttributeValues: map [ sir] * dynamodb.AttributeValue {“: a”: {S: aws.String (“Nimeni nu stii”),},}, FilterExpression: aws.String (“Artist =: a”), ProjectionExpression: aws.String (“#ST, #AT”), TableName: aws.String (“Music”),}
Reprezentarea expresiilor DynamoDB
Expresiile DynamoDB sunt reprezentate de tipuri de constructori statici in pachetul de expresii. Acesti constructori, cum ar fi ConditionBuilder si UpdateBuilder, sunt creati in pachet folosind un model de constructor. Tastarea statica a constructorilor permite verificari in timp de compilare a sintaxei expresiilor DynamoDB care sunt create. Urmatorul exemplu arata cum sa creati un constructor care reprezinta un FilterExpression si un ProjectionExpression.
filt: = expression.Name (“Artist”). Equal (expression.Value (“No One You Know”)) // let: a fi un ExpressionAttributeValue reprezentand sirul “No One You Know” // echivalent FilterExpression: “Artist =: a “proj: = expression.NamesList (expression.Name (” SongTitle “), expression.Name (” AlbumTitle “),) // echivalent ProjectionExpression:” SongTitle, AlbumTitle ”
In acest exemplu, variabila filt reprezinta un FilterExpression. Observati ca atributele articolelor DynamoDB sunt reprezentate folosind functia Name () si valorile articolelor DynamoDB sunt reprezentate in mod similar folosind functia Value (). In acest context, sirul „Artist” reprezinta numele atributului articolului pe care dorim sa il evaluam, iar sirul „Nimeni nu stie” reprezinta valoarea pe care dorim sa o evaluam atributul articolului. Specificati relatia dintre cei doi operanzi utilizand metoda Equal ().
In mod similar, variabila proj reprezinta o Expresie de proiectie. Lista de nume de atribute de element care cuprinde ProjectionExpression sunt specificate ca argumente pentru functia ListeNume (). Pachetul de expresii foloseste tipul de siguranta Go si, daca o valoare a elementului urmeaza sa fie utilizata ca argument pentru functia NumeLista (), se returneaza o eroare de timp de compilare. Modelul de reprezentare a expresiilor DynamoDB prin indicarea relatiilor dintre operanzi cu functii este consecvent pe intregul pachet de expresii.
Crearea unei expresii
Tipul Expression este nucleul pachetului de expresie.
videosgays tetonas delgadas
compilacion anal coños peludos rubios
viejas muy calientes comic maduras
insesto madurafollando
cinema gropers pornocolombianas
corridas anales casadas follando por dinero
filme porno vechi swingers españoles
monjas folladoras compartiendo novia
jovencita masturbandose hermanas tetonas
tias buenas desnudas lisbianas
hermanos jovenes follando brazzers videos completos
videos porno gay de españoles tetudas españolas
madura en la playa negros follando a blancas
travesti paja pilladas españolas follando
actores porno gay españoles peliculas x vintage
falsos casting porno metart films
porno rural abuelas y nietos xxx
mía kalifa mamadas retro
porno agresivo paginas sexo
travestis maduras tetonas cubanas
O expresie reprezinta o colectie de expresii DynamoDB cu metode getter, cum ar fi Condition () si Projection (), utilizate pentru a recupera siruri de expresii DynamoDB specifice formatate. Urmatorul exemplu arata cum sa creati o expresie.
filt: = expression.Name (“Artist”). Equal (expression.Value (“No One You Know”)) proj: = expression.NamesList (expression.Name (“SongTitle”), expression.Name (“AlbumTitle”) ,) expr, err: = expression.NewBuilder (). WithFilter (filt). WithProjection (proj). Build () if err! = Nil {fmt.Println (err)}
In acest exemplu, variabila expr este o instanta de tip Expression. O expresie este construita folosind un model de constructor. In primul rand, un nou Builder este initializat de functia NewBuilder (). Apoi, tipurile care reprezinta DynamoDB Expressions sunt adaugate la Builder prin metodele WithFilter () si WithProjection (). Metoda Build () returneaza o instanta a unei expresii si a unei erori. Eroarea este fie o InvalidParameterError, fie un UnsetParameterError.
Nu exista nicio limita la numarul de diferite tipuri de expresii DynamoDB pe care le puteti adauga la Generator, dar adaugarea aceluiasi tip de expresie DynamoDB va suprascrie expresia DynamoDB anterioara. Urmatorul exemplu arata o instanta specifica a acestei probleme.
cond1: = expression.Name (“foo”). Egal (expression.Value (5)) cond2: = expression.Name (“bar”). Equal (expression.Value (6)) expr, err: = expression.NewBuilder (). CuConditie (cond1). CuConditie (cond2). Build () if err! = Nil {fmt.Println (err)}
Acest exemplu arata ca al doilea apel al WithCondition () suprascrie primul apel.
Completarea campurilor unui API de scanare DynamoDB
Urmatorul exemplu arata cum sa utilizati o expresie pentru a completa campurile membre ale unui API de functionare DynamoDB.
filt: = expression.Name (“Artist”). Equal (expression.Value (“No One You Know”)) proj: = expression.NamesList (expression.Name (“SongTitle”), expression.Name (“AlbumTitle”) ,) expr, err: = expression.NewBuilder (). WithFilter (filt). WithProjection (proj). Build () if err! = Nil {fmt.Println (err)} input: = & dynamodb.ScanInput {ExpressionAttributeNames: expr.Names (), ExpressionAttributeValues: expr.Values (), FilterExpression: expr.Filter (), ProjectionExpression: expr .Projection (), TableName: aws.String („Muzica”),}
In acest exemplu, metodele getter de tip Expression sunt utilizate pentru a obtine sirurile de expresie DynamoDB formatate. Cand utilizati Expression, trebuie sa atribuiti intotdeauna campurile membre ExpressionAttributeNames si ExpressionAttributeValues din API-ul DynamoDB, deoarece toate numele si valorile atributelor de element sunt aliasate. Asta inseamna ca, daca membrii ExpressionAttributeNames si ExpressionAttributeValues nu sunt alocati metodelor corespunzatoare Nume () si Valori (), operatia DynamoDB va rula intr-o eroare logica.
Daca aveti nevoie de un punct de plecare, consultati exemplul de lucru din AWS SDK pentru Go.
In general, pachetul de expresii face ca utilizarea expresiilor DynamoDB sa fie curata si simpla. Sintaxa si regulile complicate ale expresiilor DynamoDB sunt abstracte, astfel incat nu mai trebuie sa va faceti griji cu privire la ele!








