如何使用express和mongoose连接本地网络中的MongoDB

6

我正在使用express和mongoose搭建一个服务器,希望其他在本地网络中的机器也能使用它。在Mongodb配置文件中已将bind_ip变量设置为0.0.0.0。

const connection = mongoose
    .connect(
        "mongodb://192.168.254.104/db",
        {
            useNewUrlParser: true
        }
    )
    .then(() => console.log("Connected to MongoDB"))
    .catch(error => console.log(error));

我尝试在我的手机上连接,但服务器响应说它找不到数据库。


1
你缺少端口号,在大多数情况下最好使用本地主机。 - Dominic
你想将MongoDB服务器暴露到你的局域网吗?因为你展示的代码是服务端代码。这是否意味着你想运行多个 Express 服务器? - user5734311
我只希望他们使用相同的 Express 服务器和数据库。 - gian29
好的,既然如此,就没有必要将mongodb服务器暴露给您的局域网。您的express服务器已经可以从局域网中的所有计算机访问,并且只有express服务器需要访问mongodb服务器。由于两者在同一台机器上,因此根本不需要进行任何特殊的配置。 - user5734311
你好,如果你的问题得到解决,你应该接受答案并帮助社区。 - Prathamesh More
3个回答

9

首先,您需要在本地运行 MongoDB 服务器。

默认运行端口为:27017

mongoose.connect('mongodb://localhost:27017/', {
    dbName: 'event_db',
    useNewUrlParser: true,
    useUnifiedTopology: true 
}, err => err ? console.log(err) : console.log('Connected to database'));

或者你可以这样做

mongoose.connect('mongodb://localhost:27017/event_db');

5
这是mongodb连接字符串的格式:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]]][/[database][?options]]

如果您想连接到本地数据库,那么字符串应该是这样的:
"mongodb://localhost:27017/mydb"

"mydb" 是您本地计算机上的数据库名称。


在这个例子中,您提供的连接URL是错误的,因为他正在尝试连接到本地网络192.168.X.X。 - Georgi Peev

1
尝试这种方式:

mongoose.Promise = Promise;
mongoose.set('useCreateIndex', true);
var mongooseOptions = {  useNewUrlParser: true }

mongoose.connect('mongodb://localhost:27017/MyDatabase', mongooseOptions, function(err) {
    if (err) {
        console.error('System could not connect to mongo server.')
        console.log(err)     
    } else {
        console.log('System connected to mongo server.')
    }
});

在这个例子中,您提供的连接URL是错误的,因为它试图连接到本地网络192.168.X.X。 - Georgi Peev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接