在具有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。这可能吗?
答案 0 :(得分:1)
您可以通过使用钩子来完成此操作。特别是您可以使用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
挂钩。