我对sails.js框架很新。我想在查询时隐藏响应JSON对象中的某些特定字段。
例如,我有一个模型对象User:
User: {
name: 'Paul',
email: 'paul@gmail.com',
token: 'sdffsdf',
id: 1
}
我希望隐藏“令牌”属性,以防GET请求查询此用户:localhost:1337/user?id=1
有人可以给我一个如何做到这一点的提示吗?
答案 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
中提到的 customToJSONtoJSON
请注意,您不能使用箭头功能,它必须像这样编写。
答案 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的用户发出此请求时,我才删除该书的引用。
当然,这只是为了展示如何做到这一点。