Loopback:如何将模型的afterRemote添加到另一个模型

Loopback: How to add afterRemote of a model to another model

我有这样的通知模型

"use strict";

module.exports = function(Notification) {


};

我还有另一个型号 Post:

"use strict";

module.exports = function(Post) {
   Post.prototype.postLike = function(options, cb) {
          this.likes.add(options.accessToken.userId);

          cb(null, "sucess");
   };

   Post.remoteMethod("postLike", {
    isStatic: false,
    accepts: [{ arg: "options", type: "object", http: "optionsFromRequest" }],
    returns: { arg: "name", type: "string" },
    http: { path: "/like", verb: "post" }
  });
}

我想要的是在通知模型中添加 Post 的 afterRemote 方法?

是否可以环回?

它应该看起来像:

"use strict";

module.exports = function(Notification) {

  var app = require("../../server/server.js");
  var post = app.models.Post;

  post.afterRemote('prototype.postLike', function(context, like, next) {
    console.log('Notification after save for Like comment');
  });
};

但这不起作用。

注意:我可以做到 Post 模型本身,但我想在通知模型中添加我所有的通知逻辑以简化和未来定制。

环回引导过程首先加载模型,然后在加载所有模型后调用引导脚本。如果您的目标是跨模型整合事物,那么最好在引导脚本中执行此操作,而不是在 model.js 文件中执行此操作。

可以用活动来做。

Loopback 应用程序在加载所有引导脚本后启动时发出 started 事件 here

并且在 Notification 模型中这样做:

  "use strict";

    module.exports = function(Notification) {

      var app = require("../../server/server.js");

      app.on('started', function(){
      var post = app.models.Post;
      post.afterRemote('prototype.postLike', function(context, like, next) {
        console.log('Notification after save for Like comment');
       });
     });
    };

或者创建启动脚本并发出自定义事件,如 'allModelsLoaded'。所以确保启动脚本是最后一个运行。默认情况下按字母顺序启动脚本 运行。因此,制作 z.js 并在那里发出该自定义事件,然后在 Notification 模型中收听该事件。