打开连接并在您的路线/服务之间共享该连接。您可以在启动 Express 之前初始化数据库和所有相关架构。
import mongoose from 'mongoose';
// define models
import User from './user';
import Order from './order';
// connect to db
const connect = async () => {
await mongoose.connect(process.env.DATABASE_URL);
return mongoose.connection;
};
const models = { User, Order };
export { connect };
export default models;
Run Code Online (Sandbox Code Playgroud)
然后在启动 Express 之前连接:
import models, { connect } from './models';
...
// connect to the db
const connection = await connect();
// now pass in the models to your routes
request('./routes/users')(models);
request('./routes/orders')(models);
// or use middleware so you can access in routes like req.models.user.find({})
app.use((req, res, next) => {
req.models = models;
next();
})
app.listen(process.env.PORT, () =>
console.log(`Example app listening on port ${process.env.PORT}!`),
);
Run Code Online (Sandbox Code Playgroud)
您可以添加一个清理处理程序来侦听 process.exit 并关闭那里的连接。大致是这样的:
const cleanUp = (eventType) => {
connection.close(() => {
console.info('closed');
});
};
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
process.on(eventType, cleanUp.bind(null, eventType));
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5071 次 |
| 最近记录: |