【问题标题】:How do I subscribe to events in PencilBlue?如何订阅 PencilBlue 中的事件?
【发布时间】:2015-10-17 16:53:21
【问题描述】:

我实际上在弄清楚如何订阅事件时遇到了麻烦,或者至少在正确地订阅事件时遇到了麻烦。似乎没有太多关于如何做到这一点的文档,所以我从现有服务中获取了一些线索。

这是我正在使用的代码:

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 永远不会被调用。我做错了什么?

【问题讨论】:

标签: pencilblue


【解决方案1】:

PageObjectService 将触发事件。但是,从 0.4.1 开始,正如您所发现的,并非所有控制器都已转换为利用该服务。创建了一个新的控制器 PageApiController 来代替现有的控制器。 UI 最终将(~2016 年第一季度)转换为使用新的 API 端点。

【讨论】:

  • 感谢您的回复。我想现在,我将尝试通过注册 POST 路由的替换来装饰现有 API 控制器的渲染方法,然后在完成我需要做的事情后委托给原始方法。
猜你喜欢
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 2020-08-11
  • 2017-07-16
  • 1970-01-01
相关资源
最近更新 更多