Как подписаться на события в PencilBlue?

На самом деле у меня возникают проблемы с выяснением, как подписаться на события, или, по крайней мере, делать это правильно. Похоже, документации о том, как это сделать, не так много, поэтому я взял некоторые подсказки от существующих служб.

Вот код, с которым я работаю:

module.exports = function(pb){
  //pb dependencies
  var BaseObjectService = pb.BaseObjectService;

  var TYPE = 'page';

  function PageProxyService() {}

  PageProxyService.init = function(cb){
    pb.log.debug('PageProxyService: Initialized');
    cb(null, true);
  };

  PageProxyService.handlePageSave = function(context, cb){
    // I'm using console.log to make the message stand out more.
    // For production things, I use pb.log.debug :)
    console.log("===================================");
    console.log("I GOT A CALL");
    console.log("===================================");
    console.log(context);
    console.log("===================================");
    cb(null);
  };

  // Trying to subscribe to any of these seems to do nothing.
  BaseObjectService.on(TYPE + '.' + BaseObjectService.BEFORE_SAVE, PageProxyService.handlePageSave);
  BaseObjectService.on(TYPE + '.' + BaseObjectService.AFTER_SAVE, PageProxyService.handlePageSave);

  //exports
  return PageProxyService;
};

handlePageSave никогда не звонят. Что я делаю неправильно?

1 ответ

Решение

PageObjectService будет запускать события. Однако, начиная с 0.4.1, не все контроллеры, как вы обнаружили, были преобразованы для использования сервиса. Новый контроллер PageApiController был создан вместо существующего контроллера. В конечном итоге пользовательский интерфейс (~ 1 квартал 2016 года) будет преобразован для использования новых конечных точек API.

Другие вопросы по тегам