3
respostas

Como usar classes com o Consign?

Olá! Gostaria de saber se é possível utilizar classes para as APIs, e importa-las no loader do Consign? Quando eu tentei, eu recebi o erro "TypeError: Class constructor GrupoApi cannot be invoked without 'new'" (óbvio). Então, queria saber se da pra fazer isso, ou se temos que usar um objeto com uma função atribuída mesmo.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas

Fala aí Nicolas, tudo bem? Consegue me dar mais exemplos do cenário? Não entendi sua necessidade e o porque de fazer isso.

Fico no aguardo.

Fala Matehus!

Então, na construção da API, foram criados diversas funções no objeto da API. Eu achei muito semelhante a classes e métodos, e fiquei curioso para saber se: ao invés de criar um objeto com um conjunto de funções, se seria possível criar uma classe para API e utilizar métodos para realizar as ações no back end.

Por exemplo, ao invés de fazer desta forma:

    const AuthApi = { _model : mongoose.model('Usuario') }

    AuthApi.autentica = (req, res) => {
        AuthApi._model
            .findOne( {
                login : req.body.login,
                senha : req.body.senha
            })
            .then(
                usuario => {
                    if (!usuario) {
                        console.log('Login e senha inválidos');
                        res.sendStatus(401);
                    } else {
                        const token = 
                            jwt.sign( { login : usuario.login }, app.get('secret'), { expiresIn : 84600 });
                        console.log('Token criado e sendo enviado no header de resposta'); 
                        res.set('x-access-token', token);
                        res.end();
                    }
                },
                error => {
                    console.log(error);
                    res.sendStatus(401);
                }
            )
    }

Fazer desta:

    class AuthApi { 

        _model =  mongoose.model('Usuario') 

            autentica(req, res) {
            this._model.
                findOne(....)
        }
    }

Oi Nicolas, até que tem, neste caso, no seu exports você já exporta com o new pronto ou exporta um objeto que tem a referência para a classe.

O problema da segunda abordagem é que você vai precisar fazer coisa do tipo: app.model.user.User, sendo o primeiro user pro nome do arquivo e o segundo User pra pegar a referência pra sua classe.