Sails.js Sails js不应返回密码和电子邮件
我正在尝试在sails js中创建CRUD应用程序,并且我能够将数据发布到我的DB中。我注意到,当我在success sails return整个对象上插入数据时。但是,如果我们不希望某些字段作为响应,那么我们如何限制它呢。请帮忙,谢谢Sails.js Sails js不应返回密码和电子邮件,sails.js,Sails.js,我正在尝试在sails js中创建CRUD应用程序,并且我能够将数据发布到我的DB中。我注意到,当我在success sails return整个对象上插入数据时。但是,如果我们不希望某些字段作为响应,那么我们如何限制它呢。请帮忙,谢谢 module.exports = { attributes : { username : { type: 'string', required: true }, password : { t
module.exports = {
attributes : {
username : {
type: 'string',
required: true
},
password : {
type: 'string',
required: true
},
email : {
type: 'string',
required: true,
unique: true
}
},
toJson: function() {
var obj = this.toObject();
delete obj.password;
return obj;
},
beforeCreate: function(attribute, callback) {
console.log(attribute.password);
require('bcrypt').hash(attribute.password, 10, function(err, encryptedPassword) {
sails.log(err);
attribute.password = encryptedPassword;
sails.log(encryptedPassword);
callback();
});
}
};
我认为通过sails默认restapi for models得到的响应在返回之前会通过
.toJSON
运行,所以您这样做是正确的
但是,您可能会遇到大小写问题,比如您应该使用大写字母定义.toJSON
,而不是.toJSON
。试着切换一下,看看它是否能解决你的问题
更新 听起来这并不能解决你的问题。来自中国的帆船说: toJSON的真正威力取决于这样一个事实:通过res.json发送的每个模型实例都首先通过toJSON传递。您不必为使用特定模型(包括“开箱即用”蓝图)的每个控制器操作编写自定义代码,只需重写模型中的默认toJSON函数即可操作传出记录。您可以使用它来防止私人数据(如电子邮件地址和密码)被发送回每个客户端 这听起来非常明确地像我们正在尝试做的,所以这可能是一个sails bug。它可能适用于
find
,但不适用于create
。在查找现有用户时是否返回该密码
如果必须,解决此问题的可靠方法是覆盖UserController中的默认创建操作:
create: function(req, res) {
User.create(req.body).exec(function(err, user) {
if (err) {
return res.json(err);
}
// explicitly call your own toJSON() to be sure
return res.send(user.toJSON());
});
},
这并不理想,尤其是当您有许多模型属性要隐藏在许多api调用中时。但是它会完成这项工作。我认为通过sails默认的restapi for models的响应在返回之前会通过
.toJSON
运行,所以您的做法是正确的
但是,您可能会遇到大小写问题,比如您应该使用大写字母定义.toJSON
,而不是.toJSON
。试着切换一下,看看它是否能解决你的问题
更新 听起来这并不能解决你的问题。来自中国的帆船说: toJSON的真正威力取决于这样一个事实:通过res.json发送的每个模型实例都首先通过toJSON传递。您不必为使用特定模型(包括“开箱即用”蓝图)的每个控制器操作编写自定义代码,只需重写模型中的默认toJSON函数即可操作传出记录。您可以使用它来防止私人数据(如电子邮件地址和密码)被发送回每个客户端 这听起来非常明确地像我们正在尝试做的,所以这可能是一个sails bug。它可能适用于
find
,但不适用于create
。在查找现有用户时是否返回该密码
如果必须,解决此问题的可靠方法是覆盖UserController中的默认创建操作:
create: function(req, res) {
User.create(req.body).exec(function(err, user) {
if (err) {
return res.json(err);
}
// explicitly call your own toJSON() to be sure
return res.send(user.toJSON());
});
},
这并不理想,尤其是当您有许多模型属性要隐藏在许多api调用中时。但是它会完成任务。@arbuthnott在上面部分是正确的——您确实需要
toJSON
而不是toJSON
——但更重要的是,函数需要进入属性
字典中,因为它是一个实例方法:
attributes : {
username : {
type: 'string',
required: true
},
password : {
type: 'string',
required: true
},
email : {
type: 'string',
required: true,
unique: true
},
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
}
@上述arbuthnott部分是正确的——您确实需要
toJSON
而不是toJSON
——但更重要的是,该函数需要进入属性
字典中,因为它是一个实例方法:
attributes : {
username : {
type: 'string',
required: true
},
password : {
type: 'string',
required: true
},
email : {
type: 'string',
required: true,
unique: true
},
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
}
你也可以这样做
你也可以这样做
密码:{type:'string',必需:true,受保护:true}
protected:true
现在在sails v1.0上不推荐使用
你可以用它来代替那个
密码:{type:'string',必需:true,受保护:true}
protected:true
现在在sails v1.0上不推荐使用
你可以用它来代替那个
Thanx用于回复arbuthnott,但将其改为大写也不起作用。发布了一个更新,值得一提。不知道为什么套管没能解决它。祝你好运。Thanx用于回复arbuthnott,但将其改为大写也不起作用。发布了一个更新,值得一提。不知道为什么套管没能解决它。祝你好运。它对我不起作用,我试图
parseInt
一个字段,它似乎从未运行过我的customToJSON
你知道为什么吗?它对我不起作用,我试图parseInt
一个字段,它似乎从未运行过我的customToJSON
你知道为什么吗?