Search code examples
sails.jswaterline

the best way to exclude some data from a method in sails controller


I want's to exclude some data in some controller method and in other method i want's that data. I do it with forEach function right into method after finding that :

nine: function (req, res) {
    Dore.find()
        .limit(9)
        .sort('createdAt DESC')
        .populate('file')
        .exec(function (err, sh) {
            if (err) {
                return res.negotiate(err);
            } else {
                console.log('before : ', sh);
                sh.forEach(function (item, i) {
                    delete item.zaman;
                });
                console.log('after : ', sh);
                return res.send(sh);
            }
        });
},

I want to know how possible to do that with finding and do not included ever in finding so we don't need to remove that again with forEach. tanks

As @zabware say we have select method in Query option I try this format but do not work and return all data :

I try to use that with following format but don't working :

Model.find( {
            where: {},
            limit: 9,
            sort: 'createdAt DESC'
        },
        {
            select: [ 'id', 'createdAt' ]
        } )

and

Model.find( {
            where: {},
            limit: 9,
            sort: 'createdAt DESC',
                        select: [ 'id', 'createdAt' ]
        } )

and

Model.find( {}, select: [ 'id', 'createdAt' ] )

Solution

  • Although toJson is really designed to solve the kind of problem you are facing, it will not help you, since in some actions you want to exclude certain fields and in others not.

    So we need to select fields per query. Luckily there is a solution for this in waterline:

    Dore.find({}, {select: ['foo', 'bar']})
        .limit(9)
        .sort('createdAt DESC')
        .populate('file')
        .exec(function (err, sh) {
            console.log(err);
            console.log(sh);
        });
    

    This is supported since sails 0.11 but not really documented. You can find it under query options here https://github.com/balderdashy/waterline-docs/blob/e7b9ecf2510646b7de69663f709175a186da10d5/queries/query-language.md#query-options