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(); // const ctx = await this.app.createAnonymousContext(); // await ctx.service.game.readDbMaintenance(); } 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;