我正在尝试使用nodejs和mongodb构建经典的router-controller-app-dbconnection结构。我正在努力的如下:
以下课程:
class Database {
constructor(dbase) {
this.dbase = dbase;
}
makeConnect(uri, options) {
new MongoClient.connect(uri, options, (err, db) => {
if (err) {
return console.log(err)
}
this.db = db.db(this.dbase);
});
return this.db;
}
}
export default Database;
class CompaniesController {
constructor(dbConnection) {
this.db = dbConnection;
}
//get all companies
getAllCompanies(req, res) {
return res.status(200).send({
success: 'true',
message: 'companies retrieved successfully',
companies: this.db.collection('companies').find().toArray(err, results => {
if(err) {
console.log(err);
}
res.send(results)
})
});
}
}
export default CompaniesController;
和路由器下面:
const router = express.Router();
const mongoUtils = new MongoUtils();
mongoUtils.setConfigs('root', 'root');
const configs = mongoUtils.getConfigs();
const myController = new CompaniesController(new Database('sample_training').makeConnect(configs.uri, configs.options));
router.get('/api/v1/companies', myController.getAllCompanies);
export default router;
我得到Cannot read property 'db' of undefined
我想念什么?
在CompaniesController中实例化数据库对象。
class CompaniesController {
db:any;