gpt4 book ai didi

javascript - Sails.js 如何在 Controller 中调用函数

转载 作者:行者123 更新时间:2023-12-04 10:16:14 24 4
gpt4 key购买 nike

在 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 应用程序设置所有路由,因此, Controller 、服务内部的“this”概念,助手不起作用。

为此,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)
最后,如果你不需要将这些函数暴露为 Action ,你可以让它们在 module.exports 之外的文件中的任何地方运行,并在没有 this. 的情况下调用它们。

关于javascript - Sails.js 如何在 Controller 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61039552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com