2015-11-26 2 views
3

Как выполнить вложенные включения? У меня есть табличные продукты, которые имеют отношение «один к большому» с комментариями, а комментарии к таблице имеют отношение «много к одному» с таблицей пользователей. Таким образом, комментарии имеют user_id и product_id. Мой код как этотВложенные включают в sequelize?

var models = require('../models'); 

models.products.findAll({ 
    include: [ 
     {model: models.comments} 
    ] 
    }).then(function (products) { 
    next(products); 
    }).catch(function (err) { 
    next(err); 
    }); 
}); 

я получаю комментарии, но я хотел бы иметь что-то вроде

models.products.findAll({ 
    include: [ 
     {model: models.comments.include(models.comments.users)} 
    ] 
    }) 

Возможно ли это без написания пользовательских запросов?

ответ

5
models.products.findAll({ 
    include: [ 
    {model: models.comments, include: [models.comments.users] } 
    ] 
}) 
+2

, пожалуйста, добавьте некоторые пояснения к вашему ответу. –

+3

Это решение не работает как написано (по крайней мере, в версии, имеющейся у меня, 3.24.1). Внутренний include должен быть «include: [models.users]». –

-1

Вы можете использовать include.

Например:

Category = sequelize.define(...); 
Product = sequelize.define(...); 
Product.belongsTo(Category, {foreignKey: 'fk_category'}); 

Product.findAll({ 
    include: [{ 
     model: Category 
    }] 
}); 

будет получать вложенную категорию, а не только идентификатор, в category собственности.

Смежные вопросы