J'ai cherché sur le web et j'ai trouvé ceci qui pourrait être lié à ma question mais comme je ne comprends pas, je viens poser ma question ici.
Je cherche à insérer des données dans des tables. J'utilise sequelize v6
et mysql
.
Ce que j'ai dans ma base de données
J'ai 2 tables, étudiant et township.
Table étudiant : id, name, email, township_id
Table township : id, name
Ce que j'ai dans mes associations
Modèle Étudiant
Student.belongsTo(models.Township, {
foreignKey: "townshipId",
as: "township",
});
Modèle Township
Township.hasMany(models.Student, {
foreignKey: "townshipId",
as: "township",
});
Ce que j'ai dans la requête:
Dans ma requête, j'ai des données comme ci-dessous :
{
name: 'john',
email: 'john@gmail.com',
township: 'Flank',
}
Question
En fait, j'essaie d'insérer en masse des données csv dans ma base. Les utilisateurs finaux saisiront des données dans Excel comme celles ci-dessus (dans la requête) et les enregistreront sous forme de fichier csv pour les importer dans le système. Le problème est que la valeur que j'obtiens de l'analyse du csv est le nom du township en tant que valeur textuelle
, dans ce cas Flank
. Mais j'ai besoin de le changer en entier
township_id pour pouvoir l'insérer dans la table students
avec ce township_id.
(Ce que j'ai fait : Je récupère le nom du township dans ce cas Flank
et exécute la requête SELECT township_id FROM townships WHERE name = 'Flank'
, et j'obtiens township_id s'il y a Flank
dans la table townships. Je peux donc maintenant utiliser ce township_id pour l'insertion dans la table students
. Mais je pense que c'est très coûteux et un autre fait est que j'ai aussi 50 champs supplémentaires comme celui-ci.)
Par conséquent, ma question est comment puis-je insérer ce township: 'Flank'
dans la table students
sans trouver explicitement d'abord township_id
(évitant ce que j'ai fait).
Merci.