我在sequelizejs旁边使用带有es6的node.js。
我的基类(base.js):
var util = require('util');
var base = new require('../base');
class city extends base {
constructor() {
super(db.city);
}
}
module.exports = city;
我的派生类(city.js):
var city = new require('../../dataBaseOperations/city')
var app = express();
app.get('/all', function (req, res, next) {
city.all(req.query, function (result, resultData) {
if (result) {
res.json({
data: {
success: result,
content: resultData,
message: 'messageContent'
}
});
}
})
})
派生类(cityrest.js)的用法:
{{1}}
错误是: TypeError:city.all不是cityrest.js的函数
答案 0 :(得分:4)
var base = new require('../base');
这一行基本上等同于
var Base = require('../base');
var base = new Base(undefined);
这意味着,
class city extends base {
不是扩展类Base
,而是扩展它的一个实例。跳过new
关键字:
var Base = require('../base');
class City extends Base {
此处类似的问题:
var city = new require('../../dataBaseOperations/city')
在类实例构造中省略括号()
会导致所有构造函数参数设置为undefined
。在这种情况下,这似乎不是问题,但无法帮助您的代码的可读性。相反,请考虑拆分require
和实例化:
var City = require('../../dataBaseOperations/city');
var city = new City();
作为旁注,通常的惯例是以大写字母开头,而变量(例如持有类实例)应该以小写字母开头命名。
答案 1 :(得分:1)
要求返回一个对象 试试这个:
var City = require('../../dataBaseOperations/city')
var city = new City()