防止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。 这可能吗?

你可以通过使用钩子来做到这一点。 特别是你可以使用一个beforeCreatebeforeUpdate钩子,当一个新用户被创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钩子。