Je commence avec Sequelize. Je suis la documentation qu'ils fournissent sur leur site Web: http://docs.sequelizejs.com/manual/installation/getting-started.html
const Sequelize = require('sequelize');
const sequelize = new Sequelize('haha', 'postgres', 'postgres', {
Host: 'localhost',
dialect: 'postgres',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
// SQLite only
storage: 'path/to/database.sqlite'
});
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
const User = sequelize.define('user', {
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
}
});
// force: true will drop the table if it already exists
User.sync({force: true}).then(() => {
// Table created
return User.create({
firstName: 'John',
lastName: 'Hancock'
});
});
Jusqu'ici, tout fonctionne parfaitement. Et la table "utilisateur" est correctement construite et remplie. (Bien que je ne comprenne pas que Sequelize ajoute automatiquement un "s" à "utilisateur", toute explication.)
Cependant, lorsque j'ajoute la partie de code suivante:
User.findAll().then(users => {
console.log(users)
})
Je reçois cette erreur:
Rejet non géré SequelizeDatabaseError: la relation "utilisateurs" n'existe pas
Mes questions sont donc:
Lorsque vous définissez votre modèle, vous pouvez ajouter des configurations, dans ce cas, l'option que vous devez ajouter est freezeTableName
empêche les noms d'être pluriels.
const User = sequelize.define('user', {
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
}
}, {
// disable the modification of table names; By default, sequelize will automatically
// transform all passed model names (first parameter of define) into plural.
// if you don't want that, set the following
freezeTableName: true,
});
Exécutez ce code deux fois.
Avant d'exécuter la deuxième fois, mettez en commentaire le code suivant,
// force: true will drop the table if it already exists
User.sync({force: true}).then(() => {
// Table created
return User.create({
firstName: 'John',
lastName: 'Hancock'
});
});
Il existe une autre façon intéressante d'éviter cela. Mais vous devez vraiment vous concentrer sur ce mode de mise en œuvre.
const User = sequelize.define("user", {
firstname: {
type: Sequelize.STRING
},
lastname: {
type: Sequelize.STRING
}
});
vous mettez intentionnellement user
ici et utilisez users
à d'autres endroits du codage (Supposons que sequelize transformera automatiquement tous les noms de modèle passés (premier paramètre de define) au pluriel). Cette façon de coder simplifiera votre code.