麻烦要求快递模型与快递

时间:2016-11-14 22:11:33

标签: node.js express sequelize.js

我正在尝试以模块化的方式配置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,在app.use应用中间件后调用init()。 显然,我有一个订单错误,我需要我的模块。我想知道是否有办法解决这个问题,如果有更合理的方式启动我的续集数据库连接作为第一步。

谢谢。

1 个答案:

答案 0 :(得分:0)

稍后通过require修改此路线,如下所示:

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

完美地工作:)