node.js extends foo 不是函数
node.js extends foo is not a function
我在 sequelizejs 旁边使用 node.js 和 es6。
我的基地class(base.js):
class base {
constructor(table) {
this._table = table;
}
all(query) {
this._table.findAll({
}).then(function (dbStatus) {
return new Promise((resolve, reject) => {
resolve(dbStatus);
})
});
};
}
我的派生class (city.js):
var util = require('util');
var base = new require('../base');
class city extends base {
constructor() {
super(db.city);
}
}
module.exports = city;
派生的用法 class (cityrest.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'
}
});
}
})
})
错误是:类型错误:city.all 不是 cityrest.js
处的函数
需要returns一个对象。
试试这个:
var City = require('../../dataBaseOperations/city')
var city = new City()
var base = new require('../base');
这一行基本等同于
var Base = require('../base');
var base = new Base(undefined);
也就是说,
class city extends base {
不是 class Base
的扩展,而是它的一个实例。跳过 new
关键字:
var Base = require('../base');
class City extends Base {
这里有类似的问题:
var city = new require('../../dataBaseOperations/city')
在 class 实例构造中省略括号 ()
会导致所有构造函数参数设置为 undefined
。在这种情况下这似乎不是问题,但不利于代码的可读性。相反,考虑拆分 require
和实例化:
var City = require('../../dataBaseOperations/city');
var city = new City();
作为旁注,命名 classes 以大写字母开头是常见的约定,而变量(例如持有 class 个实例)应以小写字母开头命名.
我在 sequelizejs 旁边使用 node.js 和 es6。
我的基地class(base.js):
class base {
constructor(table) {
this._table = table;
}
all(query) {
this._table.findAll({
}).then(function (dbStatus) {
return new Promise((resolve, reject) => {
resolve(dbStatus);
})
});
};
}
我的派生class (city.js):
var util = require('util');
var base = new require('../base');
class city extends base {
constructor() {
super(db.city);
}
}
module.exports = city;
派生的用法 class (cityrest.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'
}
});
}
})
})
错误是:类型错误:city.all 不是 cityrest.js
处的函数需要returns一个对象。
试试这个:
var City = require('../../dataBaseOperations/city')
var city = new City()
var base = new require('../base');
这一行基本等同于
var Base = require('../base');
var base = new Base(undefined);
也就是说,
class city extends base {
不是 class Base
的扩展,而是它的一个实例。跳过 new
关键字:
var Base = require('../base');
class City extends Base {
这里有类似的问题:
var city = new require('../../dataBaseOperations/city')
在 class 实例构造中省略括号 ()
会导致所有构造函数参数设置为 undefined
。在这种情况下这似乎不是问题,但不利于代码的可读性。相反,考虑拆分 require
和实例化:
var City = require('../../dataBaseOperations/city');
var city = new City();
作为旁注,命名 classes 以大写字母开头是常见的约定,而变量(例如持有 class 个实例)应以小写字母开头命名.