Search code examples
javascriptreststrongloop

How to hide an specific field from result in strongloop


I'm trying to create an project using strongloop, in which I'm creating an web service for user login, My code runs well & gets desired output except the fact that it does not hide password

I'm getting result as

{
    "result": [{
        "_id": 2,
        "address": "abc",
        "created_by": 1,
        "created_date": "2016-03-04T00:00:00.000Z",
        "firstname": "Anup",
        "isdeleted": 0,
        "lastname": "Deshpande",
        "mobile_number": "9700128907",
        "oldpassword": "string",
        "profile_picturename": "anup.jpeg",
        "role_id": 1,
        "user_email_id": "[email protected]",
        "user_password": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
        "user_status": 1
    }]
}

Where I want to hide or delete "user_password": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8", field.

can anyone tell me how can i do that in strongloop's remote method

My renote method code is like follows

db.collection('users').find({
                user_email_id : par,
                user_password : sha256(par2)
            }).toArray(function(err, result) {

                // var passwordHash = hashPassword(user_password);
                // console.log(passwordHash);
                if (err) {
                    throw err;
                }
                if (result.length > 0) {
                    self.callback(null, result);
                    // db.disconnect();
                } else {
                    self.callback(null, response);
                    // db.disconnect();
                }
            });

Here "result will give all details" I want to hide password from result

Thanks in advance


Solution

  • Try this.

    { fields: {propertyName: <true|false>, propertyName: <true|false>, ... } }
    

    propertyName is the name of the property (field) to include or exclude. signifies either true or false Boolean literal. Use true to include the property or false to exclude it from results. You can also use 1 for true and 0 for false. By default, queries return all model properties in results. However, if you specify at least one fields filter with a value of true, then by default the query will include only those you specifically include with filters.

    refer this link https://docs.strongloop.com/display/public/LB/Fields+filter

    Example:
    var query = { fields: {password: false} }
    Model.find(query, function()
    {
    });
    

    Otherwise you can manually remove in afterremotemethod(), in ctx.result. refer this link https://docs.strongloop.com/display/public/LB/Remote+hooks