在sails.js中隐藏JSON响应对象中的一些属性

时间:2016-02-10 09:11:23

标签: json node.js sails.js

我对sails.js框架很新。我想在查询时隐藏响应JSON对象中的某些特定字段。

例如,我有一个模型对象User:

User: {
  name: 'Paul',
  email: 'paul@gmail.com',
  token: 'sdffsdf',
  id: 1
}

我希望隐藏“令牌”属性,以防GET请求查询此用户:localhost:1337/user?id=1

有人可以给我一个如何做到这一点的提示吗?

3 个答案:

答案 0 :(得分:3)

覆盖模型的toJSON()功能。这也可用于隐藏其他敏感数据。

module.exports = {
    attributes: {
        name: 'string',
        email: 'email',
        token: 'string',
        toJSON: function() {
            var obj = this.toObject();
            delete obj.token;
            return obj;
        }
    }
}

答案 1 :(得分:0)

它曾经在Sails 1.0之前运行,因为不再支持使用实例方法。使用此将导致:

  

不再支持FireBase实例方法。

相反,您必须使用docs

中提到的 customToJSON
toJSON

请注意,您不能使用箭头功能,它必须像这样编写。

答案 2 :(得分:0)

例如,如果您需要有条件地省略控制器中的某些字段,则可以执行以下操作:

    self.findByRerence = async function (req, res) {
    var book = await Pot.findOne();

    if (req.user.id === 1) {
          book = _.omit(book, ['reference']);
        }
    res.ok(book);
    }

在此示例中,仅当ID为1的用户发出此请求时,我才删除该书的引用。

当然,这只是为了展示如何做到这一点。