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

Como adaptar a API, caso seja preciso filtrar valores em determinados campos?

Achei que ia ser mostrado como filtrar valores em determinados campos, por exemplo: passar como parâmetro o campo "empresa" e o valor "Pet" e ele filtrar todos os fornecedores que começam com Pet e rertornar uma lista filtrada. Como isso seria possível?

4 respostas

Boa noite Braz, tudo certo?

Uma das formas de se realizar essa tarefa que você mencionou é utilizando o que é chamado de query parameters (parâmetros de consulta).

Esses parâmetros são atributos passados pela URL onde está a requisição e tem uma estrutura desse tipo:

http://www.buscador.com.br/api/busca?empresa=Pet

Onde o ? marca onde começam os query parameters e empresa recebe o valor Pet

Certo, mas como podemos receber e utilizar esses query params? O Express nos permite chamá-los em uma rota da seguinte forma:

app.get('/api/busca', (req, res) => {
    const comecoNomeEmpresa = req.query.empresa;
    const empresas = bancoDeDados.BuscaComecandoCom(comecoNomeEmpresa);
    res.status(200).send(empresas).json()
})

Ou seja, podemos receber essas queries como req.query.nomeDoCampo. Para fazer essa consulta no banco de dados e achar o retorno eu utilizei apenas uma interface, como pode ser visto em cursos futuros da formação Node.js com Express, como o Curso de ORM com Node.js.

Espero ter ajudado e bons estudos!

Bom dia João,

Ótima explicação, parabéns. Apenas ficou uma dúvida: caso eu precise passar esse parâmetro no "like" da query, ficaria algo como o código abaixo?

const sql = "SELECT * FROM empresas WHERE nomeEmpresa like '%".comecoNomeEmpresa."%'";
conexao.query(sql, null, (erro, resultados) => {
        if(erro)
        {
                res.status(400).json(erro)
        }else{
                res.status(201).json(resultados)
        }
});

Seria algo desse tipo?

solução!

Bom dia Braz,

Você pode utilizar uma forma de inserir expressões no meio de uma string com uma ferramenta chamada template strings da seguinte forma:

const sql = `SELECT * FROM empresas WHERE nomeEmpresa like ${comecoNomeEmpresa}%`;

Ou seja, basta cercar a string usando o caractere ` e colocar a expressão que você deseja ser substituida dentro de ${}. Caso queira mais informações sobre como esses templates funcionam basta olhar a documentação do MDN.

Sobre a query SQL em si, eu encontrei esse material da W3schools sobre o funcionamento do operador LIKE. Para realizar o comportamento desejado, precisamos colocar um % depois do padrão que queremos encontrar para que ele comece com o nome que demos e termine com qualquer outro conteúdo.

Espero ter ajudado e bons estudos!

Muito obrigado pelas dicas, muito grato mesmo