在module.exports调用上定义抽象类

时间:2016-07-21 12:43:36

标签: javascript node.js express module abstract-class

我有一个基本的迁移类,如下所示:

"use strict";

var Schema   = require('../database/schema');
var sequence = require('when/sequence');
var _        = require('lodash');

class Migrate {

    constructor(knex) {
        this.knex = knex;
    }

    createTable(tableName) {
        ...
    }

    createTables() {
        ...
    }

    run() {
        return this.createTables();
    }
}

module.exports = (knex) => {
    return new Migrate(knex)
}

我可以像这样使用它:

require('./app/commands/' + process.argv[2] + '.js')(knex)
    .run()
    .then((...))

但是,我想继承一个名为“Command”的抽象类,所以我将以下几行添加到我的“Migrate”类中。

"use strict";
var Command  = require('./command');

class Migrate extends Command {
     ...
}

问题是,我不知道如何将Command类转换为模块。现在就是这样:

"use strict";

module.exports = class Command {
    sayHello() {
        console.log("hello");
    }
}

但它不起作用。 (例如,这在Migrate类的构造函数方法中未定义,因此我无法将Knex放到实例中)

有没有正确的方法来使用带有模块模式的抽象类?

谢谢。

0 个答案:

没有答案