2013-05-16 3 views
0

У меня есть несколько сценариев в моем приложении, где мне нужно манипулировать данными до их сохранения.Манипулирование данными перед сохранением с помощью geddy

У меня есть фон CakePHP, поэтому я обычно делаю это в методе beforeSave модели.

Есть ли что-нибудь эквивалентное, что я могу сделать в своих моделях в geddy?

ответ

1

Проверьте Model events.

Both the base model 'constructors,' and model instances are EventEmitters. The emit events during the create/update/remove lifecycle of model instances. In all cases, the plain-named event is fired after the event in question, and the 'before'-prefixed event, of course happens before.

The 'constructor' for a model emits the following events:

  • beforeCreate
  • create
  • beforeValidate
  • validate
  • beforeUpdateProperties
  • updateProperties
  • beforeSave (new instances, single and bulk)
  • save (new instances, single and bulk)
  • beforeUpdate (existing single instances, bulk updates)
  • update (existing single instances, bulk updates)
  • beforeRemove remove

Например:

var MyModel = function() { ... }; 

MyModel = geddy.model.register('MyModel', MyModel); 

MyModel.on('beforeSave', function(data){ 
    console.log(data); 
}) 
+0

Не уверен, если я правильно реализации этого в моей модели, как это приводит к User.on ('BeforeSave', функция() { ^ TypeError: функции объекта() { this.defineProperties ({ адрес электронной почты: {тип: 'строка'}, пароль: {тип: 'строка'} }); } не имеет метода 'on' – timstermatic

+0

@wiseguysonly Обновлен мой ответ. Я не уверен, как получить сохраненный элемент - поэтому внутри события 'beforeSave' попробуйте выполнить регистрацию« this »или« arguments », чтобы увидеть, где« элемент », которым вы хотите манипулировать. Дайте мне знать о вашем успехе :) – JAM

+0

Спасибо, что сработали. Я отредактировал ваш ответ, чтобы добавить аргумент данных в анонимную функцию. С этим я могу сделать data.password и т. Д. – timstermatic

Смежные вопросы