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

qual promise é retornada no adiciona do NegociacaoService?

No NegociacaoService.js, método adiciona ele retorna uma Promise. Como a Promise não é instanciada, a Promise que é retornada para o NegociacaoController é a de Connection? (aula 04 video 05)

4 respostas

Boa tarde!

O método adiciona() de NegociacaoController não retorna valor algum. Talvez, para eu entender melhor a sua pergunta, seja interessante você postar o código dessa parte para que eu possa pontuá-lo.

É desse código que você esta se referindo?

adiciona(event) {

        event.preventDefault();

        let negociacao = this._criaNegociacao();

        new NegociacaoService()
            .cadastra(negociacao)
            .then(mensagem => {
                this._listaNegociacoes.adiciona(negociacao);
                this._mensagem.texto = mensagem; 
                this._limpaFormulario();  
            }).catch(erro => this._mensagem.texto = erro);
    }

Ah, você esta se referindo a NegociacaoService, não NegociacaoController, desculpe. Todavia, não há o método adiciona() em NegociacaoService, é cadastra(). É a este que você esta se referindo?

solução!

Então, vamos lá:

class NegociacaoService {
    constructor() {
        this._http = new HttpService();
    }
    // código anterior omitido 

    cadastra(negociacao) {
         return ConnectionFactory
            .getConnection()
            .then(conexao => new NegociacaoDao(conexao))
            .then(dao => dao.adiciona(negociacao))
            .then(() => 'Negociação cadastrada com sucesso')
            .catch(erro => {
                throw new Error("Não foi possível adicionar a negociação")
            });
    }
}

O cadastra() retorna uma promise, aquela que é retornada por ConnectionFactory.getConnection(). É isso mesmo que você colocou meu aluno! Quem chamar service.cadastra() esta recebendo uma promise, por isso pode fazer .then().

Sim era o método cadastrada. Acabei trocando o nome do método pq copiei com mesmo nome do controller XD. Obrigado pela rápida resposta.