Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

575
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda