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

Problemas no salvamento no db.json

Seguindo os passos da aula até o momento, tenho o seguinte código:

Para salvar o pensamento:

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

**Para manipular a submissão do formulário **

async function manipularSubmissaoFormulario(evento) {
    evento.preventDefault();

    const id = document.getElementById("pensamento-id").value
    const conteudo = document.getElementById("pensamento-conteudo").value
    const autoria = document.getElementById("pensamento-autoria").value
    const data = document.getElementById("pensamento-data").value

    if (!validarData(data)) {
        alert("Não é permitido o cadastro de datas futuras")
    }


    try {
        if (id) {
            await api.editarPensamento({ id, conteudo, autoria, data })
        } else {
            await api.salvarPensamento({ conteudo, autoria, data })
        }
        ui.renderizarPensamentos()
    }
    catch {
        alert("Erro ao salvar o pensamento")
    }
}

mas ao analisar o db.json, notei duas inconsistências:

  1. Escolhendo a data 29/07/2025 no dropdown do calendário, no db.json é salvo a data 29/08/2025 (eu entendi que os meses vão de 0 a 11, mas não deveria vir certo pelo calendário já que usamos input:date no html e Date no js?)
    EDIT: Na aula seguinte isso é tratado, obrigado. Fica apenas a dúvida quanto ao item 2., para melhor entendimento do funcionamento do json.

  2. O campo favorito não aparece no db.json nos novos pensamentos adicionados até que sejam favoritados na interface, mas depois, alternam novamente entre false e true corretamente. Sei que o funcionamento está correto, mas o atributo favorito já não devia aparecer como false ao salvar o pensamento?

1 resposta
solução!

Oi Victor! Tudo bem?

Entendo a sua dúvida sobre o campo "favorito" não aparecer no db.json inicialmente. Vamos lá:

Quando você está salvando um novo pensamento, se o campo "favorito" não é explicitamente definido no objeto que você está enviando para a API, ele simplesmente não será incluído no JSON salvo. Isso é um comportamento normal, já que o JSON só armazena os campos que você passa para ele.

Se você deseja que o campo "favorito" apareça como false por padrão, você pode modificar a função salvarPensamento para incluir esse campo no objeto enviado. Por exemplo:

async salvarPensamento(pensamento) {
    try {
        const data = converterStringParaData(pensamento.data);
        const response = await axios.post(`${URL_BASE}/pensamentos`, {
            ...pensamento,
            data,
            favorito: false // Adiciona o campo favorito com valor false
        });
        return await response.data;
    }
    catch (error) {
        alert('Erro ao salvar pensamento');
        throw error;
    }
}

Dessa forma, sempre que você salvar um novo pensamento, o campo "favorito" será incluído com o valor false, e você poderá alternar entre true e false na interface conforme necessário.

Espero ter ajudado. Conte com o apoio do fórum :)

Abraços e bons estudos!

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