mongoosejs or search code example

Example 1: mongoose where

exports.generateList = function (req, res) {
    subcategories
            .find({})//grabs all subcategoris
            .where('categoryId').ne([])//filter out the ones that don't have a category
            .populate('categoryId')
            .where('active').equals(true)
            .where('display').equals(true)
            .where('categoryId.active').equals(true)
            .where('display').in('categoryId').equals(true)
            .exec(function (err, data) {
            if (err) {
                console.log(err);
                console.log('error returned');
                res.send(500, { error: 'Failed insert' });
            }

            if (!data) {
                res.send(403, { error: 'Authentication Failed' });
            }

            res.send(200, data);
            console.log('success generate List');
        });
    };

Example 2: mongoose query with function(req, res, next)

router.post('/travellers',
    passport.authenticate('jwt', { "session": false }), function(req, res, next) {
    var pickup_location = req.body.pickup_location;
    var delivery_location = req.body.delivery_location;
    var date = req.body.date;
    var sender = req.user._id;
    var locals = {
        travellers: [],
        senders: []
    };

    async.series([
        // Load travels first
        function(callback) {
            Travel.find({ "date": date }, function (err, travels) {
                if (err) return callback(err);
                locals.travels = travels;
                callback();
            });
        },
        // Load users (won't be called before task 1's "task callback" has been called)
        function(callback) {
            async.forEach(locals.travels, function (travel, callback) {
                User.findById(travel.traveller, function (err, user) {
                    if (err) return callback(err);
                    data = {
                        "name": user.name,
                        "email": user.email,
                        "phone": user.phone,
                        "image_url": user.image_url,
                        "type": "traveller"
                    };
                    console.log(data);
                    local.travellers.push(data);
                    callback();
                });
            }, function (err) {
                if (err) return callback(err);
                            callback();
            });
        }
    ], function(err) { /* This function gets called after 
          the two tasks have called their "task callbacks" */
        if (err) return next(err);
        //Here locals will be populated with `travellers` and `senders`
        //Just like in the previous example
        console.log(locals);
        console.log(locals.travellers);
        res.json(locals.travellers);
    });
});