node.js - 由于 MongoDB,Nodejs 无法调用多个 Web 应用程序实例
问题描述
我正在运行 Nodejs Web 应用程序,该应用程序基于用户请求 - 将调用 MongoDB,但在任何时候我们都只能打开一个页面实例和进程,如果我们发出另一个请求,它会失败并出现以下错误:
我们发现问题是由于 Mongodb 连接,我们的应用程序无法处理多个 mongo 请求。如果多个用户请求主页,我们会看到此错误。我们使用命令启动应用程序:“nodejs bin/www” 感觉我们在处理 Mongo 请求时缺少一些非常基本的东西。请建议。关于如何处理多个请求的任何输入 - 使用带有 mongodB 的节点 js 进行进程调用?
未找到 404 错误:未在 c:\app\test\app.js:129:13 at Layer.handle [as handle_request] (c:\app\test\node_modules\express\lib\router\layer.js: 95:5) 在 trim_prefix (c:\app\test\node_modules\express\lib\router\index.js:312:13) 在 c:\app\test\node_modules\express\lib\router\index.js: 280:7 在 Function.process_params (c:\app\test\node_modules\express\lib\router\index.js:330:12) 在下一个 (c:\app\test\node_modules\express\lib\router\index .js:271:10) 在 IncomingForm 的 form.parse (c:\app\test\node_modules\express-formidable\lib\middleware.js:17:7) 中。(c:\app\test\node_modules\formidable\lib\incoming_form.js:107:9) 在 emitNone (events.js:111:20) 在 IncomingForm.emit (events.js:208:7)
bin/www(文件)
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var config = require('../config');
var MongoClient = require('mongodb').MongoClient;
var debug = require('debug')('hornbill:server');
var http = require('http');
var assert = require('assert');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '5007');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
MongoClient.connect(config.mongo_url, {
poolSize: 20
},function(err, db) {
assert.equal(null, err);
app.locals.mongo = db.db(config.mongo_db);
server.listen(port);
console.log("inside app.js",app.locals.mongo.listCollections());
//db.close();
//module.exports.mongo=db;
}
);
//server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
server.timeout = 1000 * 60 * 10;
路线/home.js:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
console.log(process.cwd());
const db = req.app.locals.mongo;
db.listCollections({}).toArray(function(err, collInfos) {
try {
res.render('home',{collection:collInfos});
}
catch(err){
res.end();
console.log(err)}
});
});
module.exports = router;
解决方案
推荐阅读
- sql-server - 确定字符串在 SQL Server 中的存储过程中存在的次数
- javascript - 叠加 2x 图像 blob
- r - 将列表作为新行值插入 1 列,同时复制其他列
- android - AndroidJunit4 不接受空间函数测试名称?
- qt - 来自 QStateMachine 中的信号的转发值
- python - 无法阻止我的脚本抓取不必要的行
- css - HTML 部分元素之间的间隙
- r - 在 sp 图的不同面板中绘制轮廓
- beagleboneblack - 使用 GPIO3_13 (GPIO109) 禁用 USB VBUS
- c# - 调用更新属性的静态对象方法时文本框不更新