Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao salvar data

Ola a todos tudo bem?? Logo apos seguir como foi passado na aula, meu código esta aparecendo erro ao salvar pensamento, esse é meu codigo,

const URL_BASE = "http://localhost:3000";

const converterStringParaData = (datString) => {
  const [ano, mes, dia] = dataString.split("-");
  return new Date(Date.UTC(ano, mes - 1, dia));
};

const api = {
  async buscarPensamentos() {
    try {
      const response = await axios.get(`${URL_BASE}/pensamentos`);
      return await response.data;
    } catch {
      alert("Erro ao buscar pensamentos");
      throw error;
    }
  },

  async salvarPensamento(pensamento) {
    try {
      const data = converterStringParaData(pensamento);
      const response = await axios.post(`${URL_BASE}/pensamentos`, {
        ...pensamento,
        data,
      });
      return await response.data;
    } catch {
      alert("Erro ao salvar pensamento");
      throw error;
    }
  },

  async buscarPensamentoPorId(id) {
    try {
      const response = await axios.get(`${URL_BASE}/pensamentos/${id}`);
      return await response.data;
    } catch {
      alert("Erro ao buscar pensamento");
      throw error;
    }
  },

  async editarPensamento(pensamento) {
    try {
      const response = await axios.put(
        `${URL_BASE}/pensamentos/${pensamento.id}`,
        pensamento
      );
      return await response.data;
    } catch {
      alert("Erro ao editar pensamento");
      throw error;
    }
  },

  async excluirPensamento(id) {
    try {
      const response = await axios.delete(`${URL_BASE}/pensamentos/${id}`);
    } catch {
      alert("Erro ao excluir um pensamento");
      throw error;
    }
  },
  async buscarPensamentoPorTermo(termo) {
    try {
      const pensamentos = await this.buscarPensamentos();
      const termoEmMinusculas = termo.toLowerCase();
      const pensamentosFiltrados = pensamentos.filter((pensamento) => {
        return (
          pensamento.conteudo.toLowerCase().includes(termoEmMinusculas) ||
          pensamento.autoria.toLowerCase().includes(termoEmMinusculas)
        );
      });
      return pensamentosFiltrados;
    } catch (error) {
      alert("Erro ao filtrar pensamentos");
      throw error;
    }
  },
  async atualizarFavorito(id, favoritos) {
    try {
      const response = await axios.patch(`${URL_BASE}/pensamentos/${id}`, {
        favoritos,
      });
      return response.data;
    } catch (error) {
      alert("Erro ao atualizar favorito");
      throw error;
    }
  },
};

export default api;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá, Leonardo! Tudo bem?

Tem dois pontos a ajustar no código:

Primeiro na função converterStringParaData, há um pequeno erro de digitação ao nomear o parâmetro, note que foi digitado datString ao invés de dataString.

Depois no método salvarPensamento, você está chamando converterStringParaData(pensamento), mas a função converterStringParaData espera uma string de data, como pensamento.data.

Experimente alterar a linha:

const data = converterStringParaData(pensamento);

Para:

const data = converterStringParaData(pensamento.data);

Isso deve garantir que a função receba a string correta para converter. Além disso, verifique se a estrutura do objeto pensamento realmente possui a propriedade data como uma string no formato esperado.

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Gratidão pela ajuda!