更改蓝图操作的响应 (Sails.JS)
Change response for a blueprint action (Sails.JS)
我有一个具有三个属性的 User
模型:name
、email
和 password
我有这个模型的蓝图,这意味着为 find
、findOne
、create
、...
创建动作
我的问题是 POST
在 /api/users
上输入一些值会创建用户,但密码包含在响应中。在将响应发送到浏览器之前是否有任何 way/hack 可以更改响应,或者我应该重写 create
操作吗?
使用toJSON方法
// api/models/User.js
module.exports = {
attributes: {
username: 'string',
password: 'string',
// Override the default toJSON method
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
}
}
http://sailsjs.org/#!/documentation/reference/waterline/records/toJSON.html
更新
您可以将 属性 protected: true
放在 password
属性上,它会做同样的事情:
// api/models/User.js
module.exports = {
attributes: {
username: 'string',
password: { type: 'string', protected: true }
}
}
http://sailsjs.org/#!/documentation/concepts/ORM/Validations.html
我有一个具有三个属性的 User
模型:name
、email
和 password
我有这个模型的蓝图,这意味着为 find
、findOne
、create
、...
我的问题是 POST
在 /api/users
上输入一些值会创建用户,但密码包含在响应中。在将响应发送到浏览器之前是否有任何 way/hack 可以更改响应,或者我应该重写 create
操作吗?
使用toJSON方法
// api/models/User.js
module.exports = {
attributes: {
username: 'string',
password: 'string',
// Override the default toJSON method
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
}
}
http://sailsjs.org/#!/documentation/reference/waterline/records/toJSON.html
更新
您可以将 属性 protected: true
放在 password
属性上,它会做同样的事情:
// api/models/User.js
module.exports = {
attributes: {
username: 'string',
password: { type: 'string', protected: true }
}
}
http://sailsjs.org/#!/documentation/concepts/ORM/Validations.html