开始接触 Sail.js(和 Node)。
版本
$ sails --version
1.2.4
$ node --version
v12.16.1
我的第一个 sails Controller (示例)如下:
// MyController
// MyController.js
module.exports = {
sum_it: function (a, b) {
return (a + b);
},
minus_it: function (a, b) {
return (a - b);
},
process_it: function (req, res) {
let i = 12;
let j = 4;
do_what = "sum"; //this will be an input extracted from req
if (do_what == "sum") {
let result = this.sum_it(i, j); //"this" doesn't work????
} else {
let result = this.minus_it(i, j); //"this" doesn't work????
}
console.log(result);
return res.send(result);
}
};
我的目的是在该 Controller 本身中定义很少的函数,因为它们仅在此 Controller 下使用。我使用了 this.sum_it(i, j)
this.minus_it(i, j)
并且它们都不起作用。
在 Controller 中拥有多个函数并在该 Controller 文件中调用它们的最佳方法是什么(假设这些函数对于该 Controller 来说过于特定,因此不需要将它们取出并放入其他帮助程序文件中)?
最佳答案
你必须这样思考:当 Sails 运行时,它会编译所有 Controller 、服务、助手等,并使用内部 Express 应用程序设置所有路由,因此,里面有“this”的概念 Controller 、服务、助手不起作用。
为此,sails 为您提供了一个全局可用的对象:sails
。在该对象中,您可以找到所有运行时变量、 Controller 、服务等。
要访问 Controller 内的特定 Controller 操作,对于 Sails 0.12,您可以执行以下操作:
sails.controllers.my.sum_it(1,2)
对于 Sails 1.x,您可以执行以下操作:
sails.getActions()['my/sum_it'](1,2)
最后,如果您不需要将这些函数公开为操作,您可以将它们设置为 module.exports 之外的文件中的任何函数,然后在不使用 this 的情况下调用它们。
关于javascript - Sails.js 如何调用 Controller 内的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61039552/