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:
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?
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.