Node.js 使用节点连接到MongoDB服务器在本地主机上没有响应
我正在尝试将node.js游戏连接到MongoDB集群,以便存储用户名和密码。我已经使用express+socket.io在本地存储了模拟数据库。我试图设置MongoDB atlas来存储用户名和密码,这样当本地主机关闭时,数据不会消失 我已经逐字逐句地试过了。当我测试连接是否成功时,我在终端上输入:Node.js 使用节点连接到MongoDB服务器在本地主机上没有响应,node.js,mongodb,express,socket.io,Node.js,Mongodb,Express,Socket.io,我正在尝试将node.js游戏连接到MongoDB集群,以便存储用户名和密码。我已经使用express+socket.io在本地存储了模拟数据库。我试图设置MongoDB atlas来存储用户名和密码,这样当本地主机关闭时,数据不会消失 我已经逐字逐句地试过了。当我测试连接是否成功时,我在终端上输入: node app.js 我的服务器按预期启动并打印服务器已启动。在本教程中,我将看到错误或成功连接消息。但是,当我启动服务器时,我也看不到。我调试这个有困难,因为我没有得到任何回应 下面是我的a
node app.js
我的服务器按预期启动并打印服务器已启动
。在本教程中,我将看到错误或成功连接消息。但是,当我启动服务器时,我也看不到。我调试这个有困难,因为我没有得到任何回应
下面是我的app.js文件的开始部分
// Express code
var express = require('express');
var app = express();
var serv = require('http').Server(app);
var MongoClient = require('mongodb').MongoClient;
const CONNECTION_URL = *uri here*
const DATABASE_NAME = "bunnyCrossing";
var timeRemaining;
// If query is '/' (nothing)
app.get('/',function(req,res){
res.sendFile(__dirname + '/client/index.html');
});
// If query is '/client'. Client can only request things from client folder
app.use('/client',express.static(__dirname + '/client'));
// replace the uri string with your connection string.
var database, collection;
app.listen(3000, () => {
MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
if(error) {
throw error;
}
database = client.db(DATABASE_NAME);
collection = database.collection("people");
console.log("Connected to `" + DATABASE_NAME + "`!");
});
});
// Server starts listening on port 2000
serv.listen(2000);
console.log("Server started");
我应该在运行node app.js时看到:
server started
Connected to `bunnyCrossing`!
但我只是看到:
server started
没有调用
app.listen
,或者您必须点击localhost:3000
调用回调以连接到mongo数据库
删除serv.listen
或将回调添加到serv.listen
,然后删除app.listen
serv.listen(2000, function(err) {
if (err) console.log(err);
else {
MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
if(error) {
throw error;
}
database = client.db(DATABASE_NAME);
collection = database.collection("people");
console.log("Connected to `" + DATABASE_NAME + "`!");
});
}
})
没有调用
app.listen
,或者您必须点击localhost:3000
调用回调以连接到mongo数据库
删除serv.listen
或将回调添加到serv.listen
,然后删除app.listen
serv.listen(2000, function(err) {
if (err) console.log(err);
else {
MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
if(error) {
throw error;
}
database = client.db(DATABASE_NAME);
collection = database.collection("people");
console.log("Connected to `" + DATABASE_NAME + "`!");
});
}
})
您确定您的服务器侦听成功吗
console.log
在serv.listen
之后,不要确保您的服务器正在运行,请尝试移动console.log(“服务器已启动”)
到应用程序的回调。听
。尝试将端口200更改为其他端口。@Hongarc当我修复控制台日志并转到localhost 2000时,服务器启动并打印正确的meessage。当我将端口3000更改为端口2000时,会引发一个服务器错误“”错误:侦听EADDRINUSE:::2000“。我知道这意味着端口2000正在使用,所以我只是不知道Mongo应该在哪个端口上。您只需运行serv.listen
或app.listen
,不要同时运行这两个端口。”app.listen
不意味着您为MongoClient
选择端口运行MongoClient
,MongoDb服务器执行此操作,并且您将端口配置为连接到连接\u URL
您确定您的服务器侦听成功吗console.log
在serv.listen
之后,不要确保您的服务器正在运行,请尝试移动console.log(“服务器已启动”)
到应用程序的回调。听
。尝试将端口200更改为其他端口。@Hongarc当我修复控制台日志并转到localhost 2000时,服务器启动并打印正确的meessage。当我将端口3000更改为端口2000时,会引发一个服务器错误“”错误:侦听EADDRINUSE:::2000“。我知道这意味着端口2000正在使用,所以我只是不知道Mongo应该在哪个端口上。您只需运行serv.listen
或app.listen
,不要同时运行这两个端口。”app.listen
没有意味着您为MongoClient
选择端口,您不需要再多一个端口来运行MongoClient
,MongoDb服务器就可以这样做,并且您可以配置端口来连接连接\u URL