0
votes

Appartenir à la table SEQUELIZE non associée

J'ai essayé d'associer 2 tables via un nouveau que j'ai déjà créé dans MySQL. Ensuite, je peux avoir besoin de données d'API. Les 2 tables à relier avec un nouveau sont l'utilisateur et le pays. Un utilisateur peut visiter de nombreux pays. Un pays peut être visité par de nombreux utilisateurs.

voici mon modèle utilisateur.js: p> xxx pré>

alors voici mon pays modèle.js: p>

const Sequelize = require('sequelize')
const db = {}
const sequelize = new Sequelize('travel_memories', 'root', '', {
    host: 'localhost',
    dialect: 'mysql',
    port: 3306
})

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db


0 commentaires

3 Réponses :


0
votes

Avez-vous exécuté vos modèles à travers quelque chose comme ça? XXX

Pour établir réellement les associations ?? Il suffit d'ajouter la logique d'association d'appartenance d'appartenance dans le pays et l'utilisateur n'est pas suffisant

J'ai un fichier d'index dans mon répertoire de modèles qui fait quelque chose comme ça, je vais le modifier un peu pour vous, vous aurez besoin de Remplacez les relevés "Chemin_to" à quel que soit votre chemin approprié .... xxx


4 commentaires

Bonjour, je ne comprends vraiment pas ce que tu veux dire. Où devrais-je écrire cela dans mon code?


J'ai ajouté du code ci-dessus que j'utilise ... Vous devez exécuter vos modèles à travers quelque chose comme ça avant de les utiliser


Bonjour, je pense que je ne comprends toujours pas comment je peux faire ça. Voir l'édition, c'est ainsi que ma demande est construite. Merci.


Console dit: SEQUELIZE.IMPORT n'est pas une fonction.



0
votes
const Sequelize = require('sequelize')
const db = {}
const sequelize = new Sequelize('travel_memories', 'root', '', {
    host: 'localhost',
    dialect: 'mysql',
    port: 3306
})

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });

const models = {
  Country: sequelize.import('../../models/Country'),
  User: sequelize.import('../../models/User'),
  CountryUserJoin: sequelize.import('../../models/Country_user')      
};

Object.keys(models).forEach((modelName) => {
  if ('associate' in models[modelName]) {
// console.log(models[modelName]);
models[modelName].associate(models);
  }
});

db.sequelize = sequelize
db.Sequelize = Sequelize

module.exports = db

6 commentaires

Le chemin des modèles dans les modèles de comète = peut ne pas être parfait parce que je ne connais pas votre structure, vous devrez peut-être changer cela ... mais cela fera les associations modèles pour vous ... juste les déclarer dans votre Les modèles ne suffisent pas


Dis-moi s'il est toujours indiqué que Séquelize Importer n'est pas une fonction, je devrais alors comparer nos versions séquelles et quelles autres choses que j'ai ajoutées


Je n'ai aucun problème avec Sequelize.import. Mais, quand j'écris dans mes modèles quelque chose comme db.Effelize.define (....), la console dit "ne peut pas lire la propriété" définir "de non définie. Donc, le fait que j'écris cette boucle transformer l'objet DB? Quoi Écris alors?


Ou simplement peut-être parce que je demande à mes modèles lorsque j'écris SEQUELIZE.IMPORT (... chemin), et mes modèles commencent par dB.Effelize.define quand DB n'est pas exporté.


Oui, au point où vous appelez cela, il est juste de se séparer, vous ne l'avez pas encore exporté


Alors pourriez-vous me donner un peu d'aide avec la façon dont je devrais écrire mes modèles afin d'éviter ce db.EffeLize.define et utilisez simplement Sequelize.define. Parce que si je viens d'écrire séquelonze.define, il est indiqué que "SEQUELIZE n'est pas défini"



0
votes

Voici comment j'ai écrit le mien dans son propre fichier JS: xxx


5 commentaires

Ok, j'ai changé mes modèles. J'aimerais savoir comment maintenant je peux interroger ma base de données. Parce que la requête simple lorsque j'appelle User.Findall, la console dit user.findall n'est pas une fonction. Et il est logique parce que la base de données n'est pas liée aux modèles ... Comment dois-je faire cela s'il vous plaît? Merci encore pour votre précieuse aide!


Quand il s'agit d'appeler la requête, vous devriez utiliser l'instance DB.Exe de vos modèles que vous passez


OK, donc j'ai fait l'utilisateur (dB, sequelize.daTatypes) .Findall ({}). Merci beaucoup d'explications. Je vais essayer si des tables sont correctement associées maintenant.


D'où vient les "modèles"? Lorsque vous appelez des modèles.Connectez-vous. Parce que pour moi, cela ne fonctionne pas: regarde ici Stackoverflow.com/Questtions/56930091/...


Vous avez un const appelé des modèles dans votre code lorsque vous exportez de la DB, mais vous n'avez rien fait avec elle ... vous le déclarez et vous l'avez mis en place, mais simplement juste exporté dB .... Votre configuration est bien différente du mien Mais je ne référenne pas le DB directement dans mes modèles .. Au lieu d'exporter dB là-bas, je l'ajoute réellement à l'objet Modèles comme des modèles.EquleLize = se séquez ... ou dans vos modèles de cas.db = dB, puis je exporte des modèles ... Il suffit d'importer des modèles au lieu de db et d'utiliser des modèles.User ou des modèles.Country pour faire vos requêtes. Si vous avez besoin de faire référence à dB à tout moment, il serait disponible comme modèles.db