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

121
Visualizações
Actualice datos sin establecer propiedades manualmente en DataStore usando AWS Amplify con angular

Usé aws-amplify durante muy poco tiempo para mi proyecto. Recientemente, me enfrenté a un problema grave sobre la actualización de datos en DataStore en aws-amplify. Después de leer los documentos de su sitio oficial, descubrí que, si quiero actualizar los datos en DataStore, funcionó de manera inmutable de esta manera,

Para la creación de datos,

 await DataStore.save( new Post({ title: "My First Post", rating: 10, status: PostStatus.DRAFT }) );

y para la actualización de datos,

 const original = await DataStore.query(Post, "123"); await DataStore.save( Post.copyOf(original, updated => { updated.title = `Any Title`; }) );

no hay problema con la creación, pero cuando voy con la actualización, esta línea es un problema si tiene más de 20 propiedades en su modelo de objeto. Porque tienes que escribir todas esas propiedades y actualizarlas.

 updated.title = `Any Title`;

Entonces, quiero actualizar así sin escribir todas las propiedades manualmente,

 const updatedTestResult = { ...this.testResult, ...this.testResultForm.value }; var result = await DataStore.save(TestResult.copyOf(this.testResult, updatedTestResult))

ahora me muestra este error,

 TypeError: fn is not a function at datastore.js:376:17 at produce (immer.esm.js:1:16034) at Model.copyOf (datastore.js:375:32) at test-result-form.component.ts:130:41 at Generator.next (<anonymous>) at asyncGeneratorStep (asyncToGenerator.js:3:1) at _next (asyncToGenerator.js:25:1) at asyncToGenerator.js:32:1 at new ZoneAwarePromise (zone.js:1427:29) at asyncToGenerator.js:21:1

o tal vez hay otra solución. ¿Puedes complacerme en eso?

  • AIT
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Creo que la función copyOf toma 2 parámetros, el primero es el objeto y el segundo es la devolución de llamada. Entonces, puedes hacer algo como esto.

 await DataStore.save( Post.copyOf(original, updated => { ...updated, ...this.testResultForm.value }) );
about 4 years ago · Juan Pablo Isaza Relatório

0

Originalmente, esta pregunta se responde en la discusión de Github. Para actualizar una sola propiedad a la vez, puede hacer lo siguiente:

 async function updateTestResult(key, value) { try { const testResult = await DataStore.save( TestResult.copyOf(originalTestResult, (updated) => { updated[key] = value; }) ); console.log("TestResult updated:", testResult); } catch (error) { console.error("Save failed:", error); } }

Para actualizar varias propiedades a la vez, puede hacer lo siguiente:

 async function updateTestResult(testResultForm) { try { const testResult = await DataStore.save( TestResult.copyOf(originalTestResult, (updated) => { for (const property in testResultForm) { updated[property] = testResultForm[property]; } }) ); console.log("TestResult updated:", testResult); } catch (error) { console.error("Save failed:", error); } }

si desea ver la respuesta original, consulte este enlace: https://github.com/aws-amplify/amplify-js/discussions/9984#discussioncomment-2959980

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