从生成的进程访问 Sails 控制器
Accessing a Sails controller from a spawned process
我正在尝试在 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 函数访问我的控制器吗?
您需要加载或提升 Sails 应用程序才能访问控制器、模型等。有关详细信息,请参阅 sails.load()
and 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 上面指出的那样,控制器标识被小写并且 "controller" 部分被删除。
我正在尝试在 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 函数访问我的控制器吗?
您需要加载或提升 Sails 应用程序才能访问控制器、模型等。有关详细信息,请参阅 sails.load()
and 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 上面指出的那样,控制器标识被小写并且 "controller" 部分被删除。