如何使服务器等待直到数据库连接建立?节点/ mongodb /表达



我有两个文件:server.js和database.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)),但我不想这样做。是否有其他方法可以对我当前的配置做类似的事情?

与其从database.js导出db,不如导出getDb——一个返回DB的函数。

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

然后在你的server.js中你可以做

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

最新更新