我已经建立并成功使用httpsServer.listen(4000, () => console.log('Express HTTPS Server running on 4000'));
中的server.js
来运行Express服务器。它工作正常,下面是我为此文件使用的代码。
我遇到的问题是,当我使用相同的代码结构创建第二个服务器文件时,却侦听除4000以外的任何其他端口。第二个服务器正在访问其他Mongo数据库,并且如果我尝试同时运行两个数据库同时使用新的服务器端口4001、3000、4100等,仅原始服务器可以工作(端口4000)。
如果我交换服务器,以便新服务器位于端口4000上,而其他旧服务器位于其他端口上,则新服务器可以工作,而旧服务器则不能。
当第二个服务器使用4000以外的端口时,它将在控制台上显示成功的连接消息,但是在通过浏览器转到正确的页面时挂起。
我要找出的是a)这是访问同一Node应用程序的2个不同数据库的最佳方法,还是我应该使用类似createConnection()
的东西,以及b)如果我现在要使用两个不同的服务器文件,如何为新服务器使用4000以外的端口?
import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import Asset from './models/Asset';
import Marketstat from './models/Marketstat';
var fs = require('fs');
var https = require('https');
var privateKey = fs.readFileSync(privkey, 'utf8');
var certificate = fs.readFileSync(fullchain, 'utf8');
var credentials = {key: privateKey, cert: certificate};
const app = express();
const router = express.Router();
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb://user:pass@localhost:27017/db?authSource=admin', { useNewUrlParser: true });
const connection = mongoose.connection;
connection.once('open', () => {
console.log('Mongo Database Connection Successful');
});
router.route('/assets').get((req,res) => {
Asset.find((err, assets) => {
if (err)
console.log(err)
else
res.json(assets)
})
})
router.route('/marketstats').get((req,res) => {
Marketstat.find((err, mstat) => {
if (err)
console.log(err)
else
res.json(mstat)
})
})
app.use('/', router);
var httpsServer = https.createServer(credentials, app);
httpsServer.listen(4000, () => console.log('Express HTTPS Server running on 4000'));