【发布时间】:2019-11-02 12:55:24
【问题描述】:
我正在尝试使用 mongodb 的节点驱动程序将 Express 应用程序连接到 mongodb。出于某种原因,我不断收到 TypeError: mongodbconnect is not a function。我想我已经正确地导出/导入了这个函数,也不认为我有任何循环引用。我无法理解我的代码有什么问题。
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 服务器,启动我的 express 应用程序,并允许我的前端 Angular 7 应用程序在 MongoDB 数据库中执行 CRUD 操作。相反,我得到这个“mongodbconnect 不是函数”错误。你能告诉我我的代码有什么问题吗?请记住,我对 javascript、Node 和 Express 还很陌生。因此,我们将不胜感激。
【问题讨论】:
-
您好,您是否在启动应用程序之前运行了“mongod.exe”。 'docs.mongodb.com/v3.2/tutorial/install-mongodb-on-windows/…这个链接
-
@DasunManathunga:我没有。我原以为如果在应用程序之前没有盯着 mongod,应用程序至少会尝试连接到 mongodb 并给出一个错误,表明 mongo 服务器没有运行。相反,我得到了关于 mongodbconnect 不是函数的错误。不确定我是否理解我得到的错误是如何与 mongod 不活动有关的。如果我在应用程序之前启动 mongod,则会收到以下错误:“app.set 不是函数”。我不明白如何正确从 app.js 导出“app”,因为它在 app.js 的 mongodbconnect 中。
标签: javascript node.js mongodb express