如何在 strongloop 的结果中隐藏特定字段

How to hide an specific field from result in strongloop

我正在尝试使用 strongloop 创建一个项目,我在其中创建了一个用于用户登录的 Web 服务,我的代码运行良好并获得了所需的输出,但它没有隐藏密码

我得到的结果是

{
    "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": "anupd@ideaentity.com",
        "user_password": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
        "user_status": 1
    }]
}

我想隐藏或删除的地方"user_password": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",字段。

谁能告诉我如何在 strongloop 的远程方法中做到这一点

我的renote方法代码如下

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();
                }
            });

这里"result will give all details"我想在结果中隐藏密码

提前致谢

试试这个。

{ 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.

参考这个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

Add hidden field in you model.json that is "hidden": ["password", "verificationToken"],

Example:
{
  "name": "User",
  "properties": {
    "realm": {
      "type": "string"
    },
    "username": {
      "type": "string"
    },
    "password": {
      "type": "string",
      "required": true
    },
    "credentials": {
      "type": "object",
      "deprecated": true
    },
    "challenges": {
      "type": "object",
      "deprecated": true
    },
    "email": {
      "type": "string",
      "required": true
    },
    "emailVerified": "boolean",
    "verificationToken": "string",
    "status": "string",
    "created": "date",
    "lastUpdated": "date"
  },
  "options": {
    "caseSensitiveEmail": true
  },
  "hidden": ["password", "verificationToken"],
  "acls": [

  ],
  "relations": {

  }
}

对我来说

// {user_password:0} - 隐藏密码

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

这很好用

更多详情请查看here