1

在使用 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。这可能吗?

4

1 回答 1

1

你可以通过使用钩子来做到这一点。特别是您可以使用beforeCreateandbeforeUpdate钩子,它会在创建新用户或更新其属性时执行。

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

于 2013-10-11T17:21:21.707 回答