Запретить атрибут модели быть установленным конструктором в 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 ответ
Вы можете сделать это с помощью крючков. В частности, вы могли бы использовать 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
крюк.