Comment insérer des données initiales à l'aide de sequelize migrations/graines?
Je suis en train de créer mon premier départ pour peupler la base de données de test, mais je ne peux pas le faire fonctionner. C'est ce que j'ai dans ma migration:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return [
queryInterface.bulkInsert('Users', [
{ username: "user1" },
{ username: "user2" }
])];
},
down: function (queryInterface, Sequelize) {
return queryInterface.dropTable('Users');
}
};
Et j'obtiens cette erreur:
== 20151024144833-create-conjugation: migrating =======
{ [SequelizeUniqueConstraintError: Validation error]
name: 'SequelizeUniqueConstraintError',
message: 'Validation error',
errors: [],
fields: [] }
Il doit y avoir un moyen plus facile de le faire. J'ai vérifié les autres AINSI en question, mais la syntaxe a changé dans la version actuelle de sequelize.
Mise à JOUR
Ok, j'ai compris mon erreur: j'étais en supposant que sequelize prendrait soin de l'horodatage. Cette solution résout le problème:
up: function (queryInterface, Sequelize) {
console.log(User);
return [
queryInterface.bulkInsert('Users', [
{ username: "user1", createdAt: Date.now(), updatedAt: Date.now() },
{ username: "user2", createdAt: Date.now(), updatedAt: Date.now() }
])
];
}
Mais je suis encore à se demander si c'est la bonne façon de semences de ma base de données. Est-il un moyen de le faire en utilisant User.create({})
?
- J'ai eu du mal avec
Date.now()
besoin de remplacer avecnew Date()
. En utilisant SQLite, il n'a pas été possible d'interroger la base de données, puisque le temps a été enregistré dans le mauvais format (Uncaught TypeError: date.indexOf is not a function
danssequelize/lib/dialects/sqlite/data-types.js:28:14
)
Vous devez vous connecter pour publier un commentaire.
Une autre solution pourrait être d'utiliser : sequelize luminaires , vous pourriez init vos tables avec des données par défaut déclarée comme un fichier json ou autre format.
Vous pouvez utiliser suivant:
Ou lu sur les "migrations" au http://docs.sequelizejs.com/en/latest/docs/migrations/
également nécessaire pour mysql, c'est à dire