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 
}