首页 文章

麻烦要求快递模型与快递

提问于
浏览
1

我试图以模块化的方式配置sequelize但是在我需要我的模型时我遇到了麻烦 .

我有以下代码用于初始化:

// sequelize.js
module.exports = {
  init() {
    if (!db) {
      db = new Sequelize(database, username, password, {
        host,
        dialect
      })
      db
        .authenticate()
        .then(() => {
          logging.info('Connection has been established successfully.')
        })
        .catch((err) => {
          logging.error(`Unable to connect to the database: ${err}`)
        })
      return Promise.resolve(db)
    }
    return Promise.resolve(db)
  },
  define(...args) {
    if (db) {
      return db.define(args)
    }
    throw new Error('init the db first before defining models')
  }
}

这是我的模特:

'use strict'
import Sequelize from 'sequelize'
import sequelize from '../sequelize'

const User = sequelize.define('user', {
  email: Sequelize.STRING
})

export default User

在我的快递应用中,我这样做:

import { user } from './routes'

sequelize.init()
  .then(() => {
    app.use('/v2', user)
    ...
  })

在用户路线中我有这个:

import express from 'express'

const router = express.Router()
import User from '../models/user'

router.get('/users', (req, res) => {
  res.json([])
})

但是,当我启动我的应用程序时,路由器中间件是第一个被启动的,并且它无法实例化数据库连接,因为sequelize,init()在应用中间件完成 app.use 之后被调用 . 显然,我有一个订单错误,我需要我的模块 . 我想看看是否有办法解决这个问题,并且如果有更合理的方式来启动我的续集数据库连接作为第一步 .

谢谢 .

1 回答

  • 0

    通过以后的 require 路由修正了这个:

    app.use('/v2', require('./routes/people'))

    工作得很完美:)

相关问题