NodeJS / Express / Mongodb - 无法读取属性'集合'未定义的

时间:2018-04-24 15:15:05

标签: node.js mongodb express mean-stack

我正在尝试通过一个单独的模块创建一个可重用的Mongodb连接Object。那么我的策略是在config目录中创建一个配置文件

server / 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集合。

server / routes / 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;

我收到以下错误 -

  

无法阅读财产'收集'未定义的

请问你能在我的代码中弄清楚问题是什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于你的db-connection.js文件。 Mongo的connect回调用于返回db对象,但不再直接。现在,您必须直接询问数据库对象,如下所示:

db.db();