在使用JugglingDB的节点应用程序中给定一个用户模型
User = schema.define('User', {
name : String,
email : String,
API_KEY : String,
created : {type: Date, default: Date.now},
});我希望API_KEY属性为“只读”。因此,以下数据:
var data = {
name : 'Test account',
email : 'test@test.com',
API_KEY : 'Some key'
}被接受为:
var data = {
name : 'Test account',
email : 'test@test.com'
}在:
var user = new User(data);因此,只有服务器才能为用户创建API_KEY。这个是可能的吗?
发布于 2013-10-12 01:21:22
你可以通过使用钩子来做到这一点。特别是,您可以使用beforeCreate和beforeUpdate挂钩,每当创建新用户或更新其属性时,都会执行这些挂钩。
例如,您可以在创建用户时分配服务器生成的API密钥,并使用以下挂钩确保以后不会更改该密钥:
User.beforeCreate = function(next, data) {
data.API_KEY = server_generate_api_key();
next();
};
User.beforeUpdate = function(next, data) {
delete data.API_KEY;
next();
};或者,您可以查看beforeSave挂钩。
https://stackoverflow.com/questions/19198188
复制相似问题