如何让服务器等待数据库连接建立?node/mongodb/express

pobjuy32  于 2023-01-01  发布在  Go
关注(0)|答案(1)|浏览(123)

我有两个文件:js服务器和js数据库
server.js的代码如下所示:

const express = require('express');
var db = require('./database');

const app = express();
.
.
some get/post methods
app.listen(3000);
.
.

database.js的代码为:

const mongoose = require('mongoose');

const db = mongoose.connect("mongodb+srv://xxx:YYYYY@"+
    "cluster0.zrpqzwp.mongodb.net/?retryWrites=true&w=majority", {
        useNewUrlParser: true, useUnifiedTopology: true})
    .then((result) => console.log('connected to db'))
    .catch((err) => console.log(err));

所以在数据库连接建立之前,我不想使用app. listen(3000)。如果所有内容都在一个文件中,可以使用. then(... app. listen(3000))来完成,但我不想这样做。有没有其他方法可以用我当前的配置来做类似的事情?

3qpi33ja

3qpi33ja1#

您应该导出x1m2 n1 a-一个返回DB的函数,而不是从database.js导出db

module.exports = async function getDb() {
   return mongoose.connect(...)
}

然后在server.js中可以执行以下操作

const getDb = require('./database.js')
...
getDb().then(() => app.listen(3000));

相关问题