NodeJS / Express / Mongodb - Не удается прочитать свойство 'collection' из неопределенного - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь установить многоразовое соединение Mongodb Object через отдельный модуль. Так что моя стратегия заключается в создании файла конфигурации в каталоге конфигурации

( сервер / config / db-connection.js ) -

var MongoClient = require( 'mongodb' ).MongoClient;
var _db;

module.exports = {
    connectToServer: function( callback ) {
        MongoClient.connect( "mongodb://localhost:27017/articles", function( err, db ) {
            _db = db;
            return callback( err );
        });
    },
    getDb: function() {
        return _db;
    }
};

Позже я пытался инициализировать соединение с базой данных в моем файле server.js

( server.js ) -

const mongoConfig = require('./server/config/db-connection');

mongoConfig.connectToServer(function (err) {
    if (err) console.log(err);
});

В файле роутера я пытался вставить свое сообщение в коллекцию users, используя повторно используемый объект соединения.

( сервер / маршруты / admin.js / ) -

const express = require('express');
const router = express.Router();

const mongoConfig = require('../config/db-connection');

var articlesDB = mongoConfig.getDb();

router.post('/configure', (req, res, next) => {
    let super_admin_info = req.body;
    super_admin_info.role = 'superadmin';

    articlesDB.collection('users').insert(super_admin_info)
        .then((result) => {
            console.log(result);
            res.send('Successfully saved super admin');
        })
        .catch((error) => {
            console.log(error);
        });
});

module.exports = router;

Я получаю следующую ошибку -

Невозможно прочитать свойство 'collection' из неопределенного

Подскажите, пожалуйста, в чем проблема в моем коде?

Спасибо!

1 Ответ

0 голосов
/ 24 апреля 2018

Проблема заключается в вашем файле db-connection.js. Обратный вызов connect Mongo используется для возврата объекта db, но больше не выполняется напрямую. Теперь вы должны напрямую запросить объект базы данных, например:

db.db();
...