Mysql
 sql >> Database >  >> RDS >> Mysql

Scegli tra molti-a-molti sequele di relazioni

Non sembra che tu abbia definito l'associazione molti-a-molti tra cibo e ingredienti. In sintesi, devi aggiungere qualcosa di simile ai tuoi modelli:

Modello alimentare:

Food.belongsToMany(Ingredients, { through: Food_ingredients});

Modello degli ingredienti:

Ingredients.belongsToMany(Food, { through: Food_ingredients});

Quindi, quando si desidera eseguire una query, non si include il modello "attraverso", ma l'altro modello nella relazione. Nel tuo caso:

Food.findAll({include: [
{
  model: Ingredients
}]}).then(responseWithResult(res)).catch(handleError(res));

Sequelize farà il join per te. Nota che se dai alla tua relazione uno pseudonimo, ad esempio:

Food.belongsToMany(Ingredients, {as 'someAlias', through: Food_ingredients});

Devi aggiungere quell'alias nel tuo include:

Food.findAll({include: [
{
  model: Ingredients, as 'someAlias'
}]}).then(responseWithResult(res)).catch(handleError(res));