es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualizar entrada de Dynamodb sdk en un índice específico en una lista dentro de un mapa usando Node.js

Estoy intentando actualizar una entrada específica de una lista utilizando un contador.

const taskParams = {
    TableName: CONST.NAMES.SUJET_TABLE_NAME,
    Key: {
        id: defectId
    },
    UpdateExpression: "SET #list.#epicType.#tasks[#taskIndex].#tracking = :attrValue",
    ExpressionAttributeNames: {
        '#list': 'epicsList',
        '#tasks': 'tasks',
        '#epicType': epicType,
        '#taskIndex': taskCounter,
        '#tracking': 'tracking',

    },
    ExpressionAttributeValues: {
        ':attrValue': epicData["tasks"][0]["tracking"]
    },
};

try {
    await documentClient.update(taskParams).promise();
    console.log("Tarea creada exitosamente.")

} catch (err) {
    console.log("No se pudo crear la tarea.", err);
}

Aquí tienes una muestra de la entrada en la base de datos:

Aquí tienes una muestra de la entrada en la base de datos

Al ejecutarlo, obtengo el siguiente error:

ValidationException: UpdateExpression no válida: Error de sintaxis; token: '#taskIndex', cerca de: '[#taskIndex]'

¿La sintaxis está equivocada o hay algo más de lo que no soy consciente?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con la sintaxis en UpdateExpression. Específicamente, el uso de corchetes alrededor de #taskIndex puede estar causando el error.

    Intenta eliminar los corchetes y actualizar UpdateExpression de la siguiente manera:

    UpdateExpression: "SET #list.#epicType.#tasks.#taskIndex.#tracking = :attrValue"

    Esto debería hacer referencia correctamente a la variable taskIndex sin causar errores de sintaxis.

Comments are closed.