防止jugglingDB中的构造函数设置模型属性
在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);
所以这样只有服务器可以为用户创build一个API_KEY。 这可能吗?
你可以通过使用钩子来做到这一点。 特别是你可以使用一个beforeCreate
和beforeUpdate
钩子,当一个新用户被创build或者它的属性被更新的时候,这个钩子就会被执行。
例如,您可以在创build用户时分配一个服务器生成的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
钩子。