2017-08-17 65 views
1

我有如下所示的模型文件:Node.js的sequelize模型文件,不考虑配置

'use strict' 

module.exports = function (sequelize, DataTypes) { 
    let User = sequelize.define('user', { 
    id: { 
     type: DataTypes.INTEGER(11), 
     allowNull: false, 
     primaryKey: true, 
     autoIncrement: true 
    } 
    }, { 
    classMethods: { 
     associate: function(models) { 
     this.belongsToMany(models.role, { 
      through: { 
      model: 'user_role' 
      }, 
      foreignKey: 'user_id' 
     }) 
     } 
    } 
    }, { 
    tableName: 'user', 
    timestamps: false, 
    underscored: true 
    } 
) 
return User 
} 

当我试图让这个模型我得到一个错误,SequelizeDatabaseError: Table 'sc.users' doesn't exist任何查询。确实数据库users不存在,其名称是user。我在我的模型中添加了关于它的信息(tableName: 'user')。

我不明白为什么sequelize不会读取我的配置选项。 我应该如何准备模型文件以便sqeuelize可以从中读取配置?

回答

0

就个人而言,我从来没有用过的表名替换,但据我可以从documentation和测试herehere看,你需要为了使用你给表名也设置freezeTableNametrue您模型,所以现在你的模型看起来像:

'use strict' 

module.exports = function (sequelize, DataTypes) { 
    let User = sequelize.define('user', { 
    id: { 
     type: DataTypes.INTEGER(11), 
     allowNull: false, 
     primaryKey: true, 
     autoIncrement: true 
    } 
    }, { 
    classMethods: { 
     associate: function(models) { 
     this.belongsToMany(models.role, { 
      through: { 
      model: 'user_role' 
      }, 
      foreignKey: 'user_id' 
     }) 
     } 
    } 
    }, { 
    freezeTableName: true, 
    tableName: 'user', 
    timestamps: false, 
    underscored: true 
    }) 
    return User 
}