2017-08-17 1 views
1

Je le fichier modèle qui se présente comme suit:Node.js fichier modèle sequelize ne prend pas en configuration de compte

'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 
} 

Lorsque je tente de faire une requête sur ce modèle que je reçois une erreur, SequelizeDatabaseError: Table 'sc.users' doesn't exist. Il est vrai que la base de données users n'existe pas, son nom est user. J'ai ajouté des informations à ce sujet dans mon modèle (tableName: 'user').

Je ne comprends pas pourquoi sequelize ne lit pas mes options de configuration. Comment dois-je préparer mon fichier de modèle pour que sqeuelize puisse en lire les configurations?

Répondre

0

Personnellement, je ne l'ai jamais utilisé le remplacement d'un nom de la table, mais pour autant que je peux voir de la documentation et des tests here et here, vous devez également configurer freezeTableName à true afin d'utiliser le nom de la table que vous avez donné à votre modèle, alors maintenant votre modèle ressemblerait à:

'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 
}