es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
        });
    });
}
Tags:  , , , ,

Answer

  1. Avatar for 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 variable document 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 con document.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.

Comments are closed.