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

Criando um array dinâmico

Olá, minha dúvida foge um pouco do contexto do curso, mas é javascript, como não tenho experiência nem conhecimento, acredito que também vale... alguém pode me ajudar a criar esse array dinâmico, eu consigo fazê-lo manipulando string, porém não consigo executá-lo na aplicação.

query = req.body;
...
[codigo omitido]
...
        "must": [
          { "match": { "chave1": query.valor1} },
          { "match": { "chave3": query.valor3} },
          { "match": { "chave4": query.valor4} },
          { "match": { "chave5": query.valor5} },
          { "match": { "chave7": query.valor7} },
          { "match": { "chaveX": query.valorX } }
        ]

Estou usando elasticsearch e preciso desses campos para fazer o filtro. Declarei o array e com IFs fui filtrando e montando o "match", mas não deu certo, acho que ele não entende o filtro e trás todo mundo. Não são todos os campos que utilizo no filtro, teria que ter um IF dentro de um FOR para ir montando, como não tenho experiência com javascript não consegui programar essa lógica, ou qualquer outra parecida. Por exemplo, no FOR, como faço para mapear se existe algum campo, para depois aplicar o IF? Object.keys dá erro... Alguém consegue me dar uma mãozinha, por favor? Obrigado

1 resposta
solução!

Consegui utilizando push.

  var busca = [];
    if(query.razao_social){
      busca.push({"match": { "razao_social":  query.razao_social }});
    }
...