2016-12-22 2 views
0

J'essaie d'utiliser des jointures Sequelize pour la première fois. Je semble avoir tout fait exactement selon le docs, mais pour une raison quelconque mes disques liés ne sont pas retournés par la recherche.Qu'est-ce qui ne va pas avec mon Sequelize belongsToMany Search?

MODÈLES SEQUELIZE

const apptsModel = db.define('Appts', { 
    id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true}, 
    [.....]}); 


const UserDataModel = db.define('UserData', { 
    [.....] 
    userID: {type: Sequelize.STRING}, 
}); 

apptsModel.belongsToMany(UserDataModel, {through: 'ApptsToUsers', foreignKey: 'ApptID'}); 
UserDataModel.belongsToMany(apptsModel, {through: 'ApptsToUsers', foreignKey: 'UserDatumUserID'}); 

const UserData = db.models.UserData; 
const Appts = db.models.Appts; 

export {UserData, Appts }; 

enregistrements de la table Mon belongsToMany sont créés avec succès, y compris les entrées correctes dans la table ApptsToUsers. Mais quand j'essaye de faire une recherche sur un Appt donné pour renvoyer les enregistrements liés du UserData, aucune donnée liée ne revient.

RECHERCHE CODE

return Promise.resolve() 
    .then(() => { 
     var participants = connectors.Appts.findAll({ where: {id: 10}, include: [ connectors.UserData ] }); 
     return participants; 
    }) 
    .then(participants => { 
    //RELATED DATA NOT FOUND 
    }) 
    .catch((err)=>{ 
     console.log(err); 
    }); 

Qu'est-ce que je manque?

Merci d'avance à tous pour toute information.

Répondre

0

Je résolu ce problème en renommant champ UserDataModel.userID à UserDataModel.id (suppression du champ UserDataModel.id précédent), et en changeant le code suivant pour omettre l'option foreignKey:

apptsModel.belongsToMany(UserDataModel, {through: 'ApptsToUsers'}); 
UserDataModel.belongsToMany(apptsModel, {through: 'ApptsToUsers'}); 

par défaut Sequelize à attendre la les champs recherchés dans ce cas sont appelés 'id'.