我正试图在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函数访问我的控制器?
答案 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上面所说,控制器身份是小写的,“控制器”部分被删除。