2016-12-22 1 views
0

初めてSequelize結合を使用しようとしています。私はdocsごとに正確にすべてを行ったようですが、何らかの理由で私の関連するレコードが検索によって返されていません。私のsequelize belongsToMany検索で何が問題になっていますか?

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

マイbelongsToManyのテーブルのレコードが正常にApptsToUsersテーブル内の正しいエントリを含め、作成されています。しかし、UserDataから関連するレコードを返すために特定のApptで検索を実行しようとすると、関連するデータは返されません。

検索コード

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

私は何をしないのですか?

事前にすべての情報をありがとうございます。

答えて

0

I(前UserDataModel.idフィールドを削除)UserDataModel.idにUserDataModel.userIDフィールドの名前を変更することによって、これを解決し、そしてforeignKeyオプションを省略するために、次のコードを変更:

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

Sequelizeデフォルト期待にこの場合、 'id'という名前のフィールドがあります。

関連する問題