我有很多功能,比方说P(),Q(),R(),S(),T(),我有3个控制器,A,B和C.
控制器A使用P()和Q(),B使用R(),S()和T(),而C使用P(),Q()和T().
我已经定义了控制器,我应该在哪里定义函数(哪个文件夹)?如何将它们包含在控制器中?
这些功能可能稍后在其他一些控制器中使用(并且可以对它们进行分类).
在Sails 1.0中,您应该使用Helpers而不是Services.
从v1.0开始,所有Sails应用程序都内置了对帮助程序的支持,这些简单实用程序允许您在多个位置共享Node.js代码.这有助于您避免重复自己,并通过减少错误和最小化重写来提高开发效率.与actions2一样,这也使得为应用程序创建文档变得更加容易.
您可以生成运行该命令的新助手:
sails生成帮助器get-current-date
将在该helpers文件夹下创建一个新文件.例:
module.exports = {
friendlyName: 'Get current date',
description: 'Creates a new Date object and returns it',
inputs: {},
exits: {
success: {
outputFriendlyName: 'Current date',
outputType: 'ref'
},
},
fn: async function (inputs, exits) {
return exits.success(new Date());
}
};
Run Code Online (Sandbox Code Playgroud)
然后就像使用它一样sails.helpers.getCurrentDate().
您应该将它们放在services文件夹中.以下是文档规定的内容:
"服务"类似于控制器操作,但通常用于在用户发送请求和服务器发回响应之间不必发生的事情.任何不依赖于.req()和.res()的逻辑都可以转换为服务,除非是为了让您的控制器保持清洁和可管理.
例如,您可以创建Utils服务:
// api/services/Utils.js
module.exports.p = function (a, b, c) {
// Do whatever...
};
module.exports.q = function (a, b, c) {
// Do whatever...
return c();
};
// And so on
Run Code Online (Sandbox Code Playgroud)
并在您的控制器中使用这些功能,如下所示:
// api/controllers/A.js
module.exports = {
anAction: function (req, res) {
// ...
Utils.p('hello', 1, [123, 456]);
Utils.q('world', 0, function () {
// ...
});
// ...
}
};
Run Code Online (Sandbox Code Playgroud)
您还可以使用要sails.services['utils'].theFunctionName()替换theFunctionName的功能名称来访问服务功能(例如p).
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |