从生成的进程访问Sails控制器

时间:2016-02-17 14:20:04

标签: javascript node.js model-view-controller sails.js bootstrapping

我正试图在Sails升降机上产生后台服务。 这是我到目前为止所提出的:

config/bootstrap.js

module.exports.bootstrap = function(cb) {

    sails.on('lifted', function() {
        var spawn = require('child_process').spawn;
        var worker = spawn('node', ['./worker.js']);
    });

    cb();

};

worker.js

var sails = require('sails');

sails.controllers.MyController.myFunction(null, function(data) {
    console.log(data);
});

当我解除Sails时,我收到以下错误:Cannot read property 'MyController' of undefined

我在我的控制器名称前面没有require('sails')并且没有sails.controllers的情况下尝试过,但它却抛出了我MyController is not defined

知道为什么我无法从bootstrap函数访问我的控制器?

1 个答案:

答案 0 :(得分:2)

您需要加载或解除Sails应用程序才能访问控制器,模型等。有关详细信息,请参阅sails.load()sails.lift()。所以它就像是:

var sails = require('sails');
sails.load(function(err, sails) {
   if (err) {
     // handle error and exit process
   }
   // sails is now fully loaded
   sails.controllers.my.myFunction(null, function(data) {
      console.log(data);
   }
});

旁注,在请求的上下文之外运行控制器代码也很奇怪。您可能应该将该代码重构为service。正如@elssar上面所说,控制器身份是小写的,“控制器”部分被删除。