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

333
Visualizações
Cómo actualizar la propiedad del mapa en dynamodb

Tengo un mapa en dynamo con la siguiente estructura:

 participants: { M: { "6ecd8c99-4036-403d-bf84-cf8400f67836": { M: { participantUid: { S: "6ecd8c99-4036-403d-bf84-cf8400f67836", }, userSummary: { M: { userRef: { S: "refGoesHere", }, }, }, isRead: { BOOL: false, }, }, }, }, },

Estoy tratando de actualizar la propiedad isRead con el siguiente comando:

 const updateReadStatusCommand = new UpdateCommand({ TableName: config.database, Key: { PK: `TASK#${taskUid}#CLIENT#${client}`, SK: `THREAD#${uid}`, }, UpdateExpression: `SET participants.#participantUid.isRead = :isRead`, ExpressionAttributeNames: { "#participantUid": userUid, }, ExpressionAttributeValues: { ":isRead": updateBody.isRead, }, ReturnValues: "ALL_NEW", });

Hasta ahora, me encuentro con el siguiente error: The document path provided in the update expression is invalid for update .

Estoy luchando por ver el problema aquí, ya que no reconocerá la propiedad dentro del mapa. ¿Alguien puede señalarme en la dirección correcta?

Editar:

También he escaneado la tabla para asegurarme de que los datos estén en el formato correcto y se ve así:

 "participants": { "6ecd8c99-4036-403d-bf84-cf8400f67836": { "isRead": false, "participantUid": "6ecd8c99-4036-403d-bf84-cf8400f67836", "userSummary": { "userRef": "refGoesHere" } } },
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No veo mucho de malo en esto, lo único que se me ocurre es que intenta cambiar...

 UpdateExpression: `SET participants.#participantUid.isRead = :isRead`, ExpressionAttributeNames: { "#participantUid": userUid, }, ...

a

 UpdateExpression: `SET participants.#participantUid.#isRead = :isRead`, ExpressionAttributeNames: { "#participantUid": userUid, "#isRead": "isRead" }, ...

en caso de que .isRead se trate como una cadena, en lugar de como parte de la ruta, como noté en los documentos, como en el ejemplo a continuación, el uso de #3str se usa como #pr.#3star en lugar de usar #pr.ThreeStar directamente -

 aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET #pr.#5star[1] = :r5, #pr.#3star = :r3" \ --expression-attribute-names file://names.json \ --expression-attribute-values file://values.json \ --return-values ALL_NEW

(nombres.json)

 { "#pr": "ProductReviews", "#5star": "FiveStar", "#3star": "ThreeStar" }
about 4 years ago · Juan Pablo Isaza Relatório

0

Solucionado esto debido a un SK incorrecto que significaba que no se podía encontrar el documento que quería actualizar.

La consulta en sí era correcta. Dejando esto aquí para cualquier persona en una posición similar, ¡compruebe que realmente está tratando de actualizar lo correcto!

about 4 years ago · Juan Pablo Isaza 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