我有两个文件: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));