Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

579
Visualizações
¿Cómo ejecutar varias operaciones al actualizar un elemento en Amazon DynamoDB?

Estoy intentando actualizar un elemento en Amazon DynamoDB. Quiero ejecutar una operación que consta de una suma y una resta, pero no puedo lograr mi objetivo.

Aquí está la función, ddb es una instancia de la clase AWS.DynamoDB.DocumentClient :

 function updateLecture(event){ const params = { TableName: 'lecture', Key: { 'lecture_id': Number.parseInt(event.lecture_id) }, UpdateExpression: 'SET #free = :total - (#total + #free)', ExpressionAttributeValues: { ':total': event.total }, ExpressionAttributeNames: { "#total" : "total", "#free" : "free" }, ReturnValues : 'UPDATED_NEW' } return ddb.update(params).promise(); }

Cuando intento ejecutar la función, aparece el siguiente error:

 "errorType": "ValidationException", "errorMessage": "Invalid UpdateExpression: Syntax error; token: \"+\", near: \"#total + #free\""

He intentado trabajar con paréntesis, pero siempre recibo el mismo error.

Me temo que no puedo usar más de una operación, pero no pude encontrar ningún rastro de eso en los documentos . De todos modos, ¿hay alguna manera de usar múltiples operaciones?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Acabo de probar la siguiente declaración de PartiQL en la consola de DynamoDB y funcionó bien:

 // Works just fine UPDATE "ddb-playground" SET myNumA = 10 - (myNumB + myNumA) WHERE PK = 'foo' AND SK = 'bar'

Funciona bien, así que al menos no hay una limitación fundamental aquí.

Sin embargo, al igual que usted, no puedo hacer que JS SDK haga esto con UpdateExpression, obtengo un error de sintaxis sin importar lo que intente. Entonces parece que el JS SDK está limitado a una sola expresión aritmética en valores numéricos.

 // Fails with: // // ValidationException: Invalid UpdateExpression: Syntax error; token: "+", near: "myNumB + myNumA" import AWS from "aws-sdk" const ddb = new AWS.DynamoDB() await ddb.putItem({ TableName: "ddb-playground", Item: { PK: {S: "foo"}, SK: {S: "bar"}, myNumA: {N: "10"}, myNumB: {N: "20"} } }).promise() await ddb.updateItem({ TableName: "ddb-playground", Key: { PK: {S: "foo"}, SK: {S: "bar"} }, UpdateExpression: "SET myNumA = :newVal - (myNumB + myNumA)", ExpressionAttributeValues: { ":newVal": {N: "30"} } }).promise()

Entonces, ¿tal vez su única opción aquí es usar PariQL para este?

 await ddb.executeStatement({ Statement: 'UPDATE "ddb-playground" SET myNumA = ? - (myNumB + myNumA) WHERE PK = ? AND SK = ?', Parameters: [{N: "30"}, {S: "foo"}, {S: "bar"}] }).promise()
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda