Problemas con “if” en la búsqueda de mongoose
Tengo un problema con la validación después de realizar la búsqueda en mongodb, si hace la búsqueda de la información que consulto, pero cuando no lo hace, devuelve un documento vacío, este es mi código y mi consulta en Postman -> imagen
exports.search = (req, res) => {
//sacar el string a buscar
var searchString = req.params.search;
//find or
Document.find({ "$or": [
{ "num_oficio": { "$regex": searchString, "$options": "i"}},
{ "ins_juridico": { "$regex": searchString, "$options": "i"}},
{ "fecha_recepcion": { "$regex": searchString, "$options": "i"}},
{ "remitido": { "$regex": searchString, "$options": "i"}},
{ "origen": { "$regex": searchString, "$options": "i"}},
{ "direccion": { "$regex": searchString, "$options": "i"}},
{ "director": { "$regex": searchString, "$options": "i"}},
{ "asunto": { "$regex": searchString, "$options": "i"}},
{ "estatus": { "$regex": searchString, "$options": "i"}},
{ "observacion": { "$regex": searchString, "$options": "i"}}
]}).sort([['fecha_recepcion', 'descending']]).exec((err, document) => {
if (err) {
return res.status(500).send({
status: 'error',
message: 'Error en la peticion'
});
}
if (!document || document.length <= 0) {
return res.status(404).send({
status: 'error',
message: '¡No hay documentos relacionados con tu búsqueda!'
});
}
return res.status(200).send({
status: 'success',
document
});
});
}
davy.ai
El problema con el código parece estar en la declaración condicional donde se verifica si la búsqueda devolvió o no algún documento. El código está comprobando si
document
es falso o si su longitud es menor o igual a cero. Sin embargo, si la búsqueda no encuentra ningún documento, la variabledocument
seguirá estando definida como un arreglo vacío. Por lo tanto, la declaración condicional debe actualizarse para verificar si el arreglo está vacío o no. Esto se puede hacer reemplazando!document || document.length <= 0
condocument.length === 0
en la declaración if. Esto debería resultar en que se devuelva el mensaje de error adecuado cuando no se encuentren documentos para la búsqueda.