2015-01-13 3 views
3

я Track и Artist моделей определены, с объединением следующим образом:Sequelize включает ссылки строки таблицы в результате при использовании включает

db.Track.belongsToMany(db.Artist, {through: 'TracksArtists'}); 
db.Artist.belongsToMany(db.Track, {through: 'TracksArtists'}); 

Я хочу, чтобы искать треки и включать Artist.name в результатах:

db.Track 
    findAll({ 
     attributes: ['title','year'], 
     where: { title: { like: '%' + string + '%' } }, 
     include: [{model: db.Artist, attributes: ['name']}] 
    }) 
    .complete(function(err, tracks){ /*...*/}); 

Однако Sequelize также включает в себя ряд от TracksArtists справочной таблице результатов:

[{"title":"Nightcall","year":2010,"Artists":[{"name":"Kavinsky","TracksArtists":{"createdAt":"2015-01-13T18:41:31.850Z","updatedAt":"2015-01-13T18:41:31.850Z","ArtistId":1,"TrackId":1}}]}] 

который не нужен. Как я могу заставить его не возвращать информацию из TracksArtists, вместо того, чтобы удалять ее самостоятельно?

+2

Try 'включают : [{model: db.Artist, attributes: ['name'], через: {attributes: []}}] ' –

+0

Работал, как шарм, спасибо. – user1205255

ответ

8

Вы можете отключить присоединиться атрибуты таблицы, пропуская пустые атрибуты массива к сквозному как:

include: [{model: db.Artist, attributes: ['name'], through: {attributes: []}}]

+0

спасибо! искал это! –

1

У меня есть Faq и Artist модели определены, с объединением следующим образом:

Faq.belongsToMany(Version, { through: FaqVersion, foreignKey: 'faqId' }); 
Version.belongsToMany(Faq, { through: FaqVersion, foreignKey: 'verId' }); 

Я столкнулся с той же проблемой с автором, но я добавлю:

models.Version.findAll({ 
    raw: true, 
    attributes: ['id', 'version'], 
    include: [{ 
    model: models.Faq, 
    attributes: [], 
    through: { attributes: [] }, 
    where: { 
    id: faq.id 
    } 
}] 
}) 

Однако Sequelize также включает в себя ряд из FaqVersion справочной таблицы в результатах:

Faqs.FaqVersion.createdAt:"2017-01-10T05:22:06.000Z", 
Faqs.FaqVersion.faqId:2, 
Faqs.FaqVersion.id:3, 
Faqs.FaqVersion.updatedAt:"2017-01-10T05:22:06.000Z", 
Faqs.FaqVersion.verId:2, 
id:2, 
version:"5.2.6" 

Я думаю through не работает

0

просто использовать синтаксис, как это:

include: [ 
      { 
       model: ModelName, 
       through: {attributes: []} 
      } 
    ]