Sequelize无法导入模型

时间:2017-11-14 12:38:08

标签: javascript node.js express sequelize.js

在expressJs项目中,我尝试使用sequelize与数据库进行交互。

这是我的型号/ user.js:

module.exports = (sequelize, DataTypes) => {
    sequelize.define('user', {
        email: {
            type: DataTypes.STRING,
            unique: true
        },
        password: DataTypes.STRING
    })
}

这是models / index.js:

const fs = require('fs')
const path = require('path')
const Sequelize = require('sequelize')
const config = require('../config/config')
const db = {}

const sequelize = new Sequelize(
  config.db.database,
  config.db.user,
  config.db.password,
  config.db.options
)

fs
  .readdirSync(__dirname)
  .filter((file) =>
      file !== 'index.js'
  )
  .forEach((file) => {
    var a = path.join(__dirname, file);
    const model = sequelize.import(path.join(__dirname, file));
    db[model.name] = model;
  })

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db

问题出在这一行

const model = sequelize.import(path.join(__dirname, file));

返回undefine到模型变量。

我在这里想念什么?我很欣赏任何提示吗?

Github上的整个代码:here

1 个答案:

答案 0 :(得分:0)

问题可能是因为缺少回报

module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define('User', { // Missing return
        email: {
            type: DataTypes.STRING,
            unique: true
        },
        password: DataTypes.STRING
    })
}

更改为

module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define('User', {
        email: {
            type: DataTypes.STRING,
            unique: true
        },
        password: DataTypes.STRING
    });
    return User;
}