2016-12-22 2 views
0

Ich versuche, Sequelize Joins zum ersten Mal zu verwenden. Ich habe anscheinend alles genau nach der docs gemacht, aber aus irgendeinem Grund werden meine zugehörigen Datensätze nicht von der Suche zurückgegeben.Was ist falsch mit meiner Sequelize gehört zu vielen Suchen?

SEQUELIZE MODELS

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 }; 

Meine belongsToMany Tabellensätze erfolgreich erstellt werden, einschließlich der richtigen Einträge in der Tabelle ApptsToUsers. Aber wenn ich versuche, eine Suche nach einem bestimmten Appt durchzuführen, um die zugehörigen Datensätze aus den UserData zurückzugeben, werden keine zugehörigen Daten zurückgegeben.

SUCHE 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); 
    }); 

Was bin ich?

Vielen Dank im Voraus für alle Informationen.

Antwort

0

Ich löste dies durch UserDataModel.userID Feld UserDataModel.id (Löschen des vorherigen UserDataModel.id Feld), und Ändern Sie den folgenden Code Umbenennung der foreignKey Option weglassen:

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

Sequelize Ausfälle zu erwarten die Felder, nach denen in diesem Fall gesucht wird, werden "id" genannt.