【问题标题】:How to hide an specific field from result in strongloop如何在strongloop中隐藏特定字段
【发布时间】:2016-06-20 18:33:12
【问题描述】:

我正在尝试使用 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();
                }
            });

这里“结果将提供所有详细信息”我想从结果中隐藏密码

提前致谢

【问题讨论】:

    标签: javascript rest strongloop


    【解决方案1】:

    对我来说

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

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

    效果很好

    详情可以查看here

    【讨论】:

      【解决方案2】:

      试试这个。

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

      propertyName 是要包含的属性(字段)的名称或 排除。表示真或假布尔文字。 使用 true 包含属性或 false 将其从结果中排除。 您也可以使用 1 表示真,使用 0 表示假。默认情况下,查询 在结果中返回所有模型属性。但是,如果您指定 至少有一个值为 true 的字段过滤器,则默认情况下 查询将仅包含您专门包含在过滤器中的那些。

      参考这个链接 https://docs.strongloop.com/display/public/LB/Fields+filter

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

      否则你可以在 afterremotemethod() 中手动删除,在 ctx.结果。 参考这个链接https://docs.strongloop.com/display/public/LB/Remote+hooks

      【讨论】:

      • 请检查更新的问题&你能告诉我如何在我的代码行“self.callback(null, result);”中过滤带有结果的字段
      • 你得到了吗?还要检查我的第二个答案
      【解决方案3】:

      在你的model.json中添加隐藏字段,即“隐藏”:[“密码”, "验证令牌"],

      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": {
      
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-10-07
        • 2017-03-02
        • 2019-03-03
        • 2013-04-06
        • 1970-01-01
        • 1970-01-01
        • 2014-07-30
        • 2022-01-27
        • 1970-01-01
        相关资源
        最近更新 更多