58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
import 'reflect-metadata'
|
||
import * as mongoose from 'mongoose';
|
||
import { Application, IBoot } from 'egg';
|
||
|
||
export default class FooBoot implements IBoot {
|
||
private readonly app: Application;
|
||
|
||
constructor(app: Application) {
|
||
this.app = app;
|
||
}
|
||
|
||
async configWillLoad() {
|
||
// Ready to call configDidLoad,`
|
||
// Config, plugin files are referred,`
|
||
// this is the last chance to modify the config.
|
||
await this.connectDB(this.app)
|
||
}
|
||
|
||
configDidLoad() {
|
||
// Config, plugin files have loaded.
|
||
}
|
||
|
||
async didLoad() {
|
||
// All files have loaded, start plugin here.
|
||
}
|
||
|
||
async willReady() {
|
||
// All plugins have started, can do some thing before app ready.
|
||
// await this.customLoadModel();
|
||
}
|
||
|
||
async didReady() {
|
||
// Worker is ready, can do some things
|
||
// don't need to block the app boot.
|
||
}
|
||
|
||
async serverDidReady() {
|
||
// Server is listening.
|
||
}
|
||
|
||
async beforeClose() {
|
||
// Do some thing before app close.
|
||
}
|
||
|
||
//#region 手动挂载model,测试需要ctx.model
|
||
|
||
public async connectDB(app: Application) {
|
||
const { url, options } = app.config.mongoose
|
||
if (url) {
|
||
const connection = await mongoose.connect(url, options)
|
||
app.context.connection = connection
|
||
}
|
||
}
|
||
|
||
//#endregion
|
||
}
|
||
|
||
module.exports = FooBoot; |