Nodejs将mongoDB连接对象传递给控制器

问题描述 投票:0回答:1

我正在尝试使用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

我想念什么?

node.js mongodb ecmascript-6 controller router
1个回答
0
投票

CompaniesController中实例化数据库对象。

class CompaniesController { 
      db:any;
© www.soinside.com 2019 - 2024. All rights reserved.