创建要在控制器上使用的类

问题描述 投票:6回答:3

我想创建一个Class并让它在我的控制器上可用。我不想在这种特殊情况下使用帮助器,因为我打算稍后使用此代码创建一个npm包。我现在不想创建一个包,因为我不想让我的代码公开。

我已经尝试在hooks文件夹中的文件中添加此代码:

console.log('Hook executed!');

module.exports = class Test {
    constructor() {
        console.log('Object created!');
    }
}

当我解除应用程序时,我看到它正在加载的钩子:

信息:启动应用程序...

钩子被执行了!

然后在随机控制器中我添加:

const test = new Test();

当我执行控制器时:

ReferenceError:未定义测试

更新:根据the documentation钩子以不同的方式定义。所以也许使用钩子不是最好的方法。关于如何在使用或不使用钩子的情况下在控制器上使用Class的任何想法?

javascript sails.js es6-class
3个回答
6
投票

您的文件应该像下面显示的这些文件:

myClass.js

'use strict';
class Test {
  constructor() {
    this.name = 'test';
  }
}
module.exports = Test;

您要使用此类的另一个文件应如下所示:

index.js

const Test = require('./myClass');
let a = new Test();
console.log(a.name);

之后运行index.js文件时,您将在控制台中看到“test”。


2
投票

好吧,研究一下Sails钩子,我发现它们有一个特殊的语法,所以这不是我想要的。另外,正如我已经说过的那样,我不想要控制器或助手。

因此,由于Sails没有默认方式创建包而没有实际创建它并将其包含在项目依赖项中,因此我采用了不同的方法。它不是很优雅,但它解决了这个特殊情况。我只是将我的Test.js文件放在api文件夹中,并将其包含在我的控制器中,如下所示:

const Test = require(__dirname + '/../../test');
let test = new Test();

0
投票

文档说钩子被加载到sails.hooks对象中并调用你使用sails.hooks[<hook-name>]的特定钩子

我想你想用这样的东西来使用钩sails.hooks.Test

更多关于它https://sailsjs.com/documentation/concepts/extending-sails/hooks/using-hooks

© www.soinside.com 2019 - 2024. All rights reserved.