Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como garantir a padronização do objeto recebido para atualização?

Na implementação da função modificaLivro(), é utilizado o operador de deconstrução de objeto para criar a nova lista de livros atualizada (código a seguir):

const conteudoMudado = { ...livrosAtuais[indiceModificado], ...modificacoes }

A variável modificacoes nada mais é do que o body da requisição PATCH. Porém, como garantir que o usuário não inseriu um novo campo não esperado (ex: dataPublicação)? No caso do código apresentado, o campo simplesmente será incorporado ao novo objeto e será salvo no arquivo livros.json.

1 resposta
solução!

Oi Davi, tudo bem?

Pelo que entendi, você está com dúvidas sobre como garantir a padronização do objeto recebido para atualização em uma função chamada modificaLivro() no contexto de uma API com Express, certo?

No código apresentado, é utilizado o operador de deconstrução de objeto para criar a nova lista de livros atualizada. Porém, você está preocupado com a possibilidade do usuário inserir um novo campo não esperado, como por exemplo, "dataPublicação".

Para garantir a padronização do objeto recebido, você pode utilizar uma abordagem que verifique se os campos recebidos estão de acordo com os campos esperados. Uma forma de fazer isso é utilizando um objeto com os campos permitidos e verificando se todos os campos recebidos estão presentes nesse objeto.

Por exemplo, supondo que os campos esperados sejam "nome" e "autor", você pode fazer algo assim:

const camposPermitidos = ["nome", "autor"];

const camposRecebidos = Object.keys(modificacoes);

const camposInvalidos = camposRecebidos.filter(campo => !camposPermitidos.includes(campo));

if (camposInvalidos.length > 0) {
  // Aqui você pode retornar um erro informando que foram recebidos campos inválidos
  console.log(`Foram recebidos campos inválidos: ${camposInvalidos.join(", ")}`);
} else {
  // Aqui você pode prosseguir com a lógica de atualização do objeto
  console.log("Campos válidos, prosseguir com a atualização");
}

Dessa forma, você consegue verificar se existem campos inválidos no objeto recebido e tomar a ação adequada.

Espero que isso possa te ajudar a garantir a padronização do objeto recebido para atualização.

Um abraço e bons estudos.