Nodejs передает объект соединения mongoDB контроллеру - PullRequest
0 голосов
/ 01 декабря 2019

Я пытаюсь построить классическую структуру router-controller-app-dbconnection, используя nodejs и mongodb. С чем я борюсь, так это:

Ниже приведены классы:

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

Чего мне не хватает?

...