防止jugglingDB中的构造函数设置模型属性

时间:2013-10-05 13:10:08

标签: node.js 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);

所以这样只有服务器才能为用户创建API_KEY。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以通过使用钩子来完成此操作。特别是您可以使用beforeCreatebeforeUpdate挂钩,只要创建新用户或更新其属性,就会执行该挂钩。

例如,您可以在创建用户时分配服务器生成的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挂钩。