Я пытаюсь подключить приложение Express к mongodb, используя драйвер узла для mongodb. По какой-то причине я продолжаю получать TypeError: mongodbconnect не является функцией. Я думаю, что я правильно экспортировал / импортировал эту функцию и не думаю, что у меня также есть циклические ссылки. Я не могу понять, что не так с моим кодом.
www.js (здесь приложение начинается с nodemon):
var app = require('../app');
var debug = require('debug')('myapp:server');
var http = require('http');
var port = normalizePort(process.env.PORT || '8085'); /*function normalizePort defined elsewhere in this file*/
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
server.on('error', onError); /*function onError defined elsewhere in this file*/
server.on('listening', onListening); /*function onListening defined elsewhere in this file*/
app.js
/*required body-parser, cookie-parser, cors, http-errors, express, morgan, path and Winston*/
var mongodbconnect = require('./mongodbconnect');
var contactUsRouter = require(path.join(__dirname, 'routes', 'contactUs'));
//connecting to MongoDB
mongodbconnect(function(err,databaseName){
if (err) console.log(err)
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors());
app.use('/api/contactus', contactUsRouter);
//error handler
app.use(function(err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
res.status(err.status || 500);
res.status(500).send('Problem');
});
module.exports = app;
})
mongodbconnect.js
var assert = require('assert'); //used for MongoDB connection
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://userID:passwd@localhost:27017/databank?authSource=admin";
var mongoDB_Options = {
poolSize: 100,
keepAlive: true,
keepAliveInitialDelay: 300000,
reconnectInterval: 1000,
reconnectTries: 10,
autoReconnect: true,
socketTimeoutMS: 360000,
connectTimeoutMS: 30000
};
var dbName = 'bank';
function connectToMongoServer(callback){
Mongoclient.connect(url, mongoDB_Options, function(err, client){
assert.equal(null, err);
console.log('Connected successfully to server');
var db = client.db(dbName);
return callback(err);
});
};
module.exports = connectToMongoServer;
Я ожидал, что этот код позволит мне подключиться к серверу MongoDB, запустить мое экспресс-приложение и позволить моему внешнему приложению Angular 7 выполнять операции CRUD в базе данных MongoDB. Вместо этого я получаю эту ошибку «mongodbconnect is not function». Подскажите, пожалуйста, что не так с моим кодом? Пожалуйста, имейте в виду, что я довольно плохо знаком с javascript, Node и Express. Так что простое объяснение будет оценено.