Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
Una sentencia find() con posibles parámetros nulos

Estoy tratando de descubrir cómo funcionan Mongoose y MongoDB ... Soy realmente nuevo en ellos, y parece que no puedo entender cómo devolver valores basados en una declaración de búsqueda, donde algunos de los parámetros dados en la consulta los posibles son nulos: ¿hay algún atributo que pueda establecer para esto o algo así?

Para explicarlo más, tengo una página web que tiene diferentes campos de entrada que se usan para buscar una empresa, sin embargo, no todos son obligatorios.

 var Company = mongoose.model('Company'); Company.find({companyName: req.query.companyName, position: req.query.position, areaOfExpertise: req.query.areaOfExpertise, zip: req.query.zip, country: req.query.country}, function(err, docs) { res.json(docs); });

Al completar todos los campos de entrada en la página web, obtengo un resultado, pero solo el específico que coincide. Digamos que solo completo el country , no devuelve nada porque el resto está vacío, pero deseo devolver todas las filas que están, por ejemplo, en Alemania. Espero haberme expresado con suficiente claridad.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Debe envolver las consultas con el operador lógico $or , por ejemplo

 var Company = mongoose.model('Company'); Company.find( { "$or": [ { "companyName": req.query.companyName }, { "position": req.query.position }, { "areaOfExpertise": req.query.areaOfExpertise }, { "zip": req.query.zip }, { "country": req.query.country } ] }, function(err, docs) { res.json(docs); } );

Otro enfoque sería construir una consulta que verifique los parámetros vacíos, si no son nulos, incluirlos como parte de la consulta. Por ejemplo, puede usar el objeto req.query como su consulta, suponiendo que las claves sean las mismas que el campo de su documento, como se muestra a continuación:

 /* the req.query object will only have two parameters/keys eg req.query = { position: "Developer", country: "France" } */ var Company = mongoose.model('Company'); Company.find(req.query, function(err, docs) { if (err) throw err; res.json(docs); });

En lo anterior, el objeto req.query actúa como la consulta y tiene una operación AND lógica implícita ya que MongoDB proporciona una operación AND implícita al especificar una lista de expresiones separadas por comas. El uso de un AND explícito con el operador $and es necesario cuando se debe especificar el mismo campo u operador en varias expresiones.


Si está buscando una consulta que satisfaga tanto AND lógico como OR , es decir, devuelva todos los documentos que coincidan con las condiciones de ambas cláusulas, por ejemplo, dada una consulta de position Y country O cualquier otro campo, entonces puede modificar la consulta para:

 var Company = mongoose.model('Company'); Company.find( { "$or": [ { "companyName": req.query.companyName }, { "position": req.query.position, "country": req.query.country }, { "areaOfExpertise": req.query.areaOfExpertise }, { "zip": req.query.zip } ] }, function(err, docs) { res.json(docs); } );

pero, de nuevo, esto podría estar sujeto a qué parámetros de consulta deben unirse como obligatorios, etc.

over 4 years ago · Santiago Trujillo Relatório

0

Simplemente terminé eliminando los parámetros en la consulta en caso de que estuvieran vacíos. Parece que todos los campos de texto en el envío se envían como "" (vacío). Como no hay tales valores en la base de datos, no devolvería nada. Tan simple que nunca se me pasó por la cabeza...

Ejemplo:

 if (req.query.companyName == "") { delete req.query.companyName; }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda