如何在Sequelize中执行此Postgres查询?

时间:2015-04-21 17:08:08

标签: postgresql inner-join sequelize.js

我需要将此连接查询翻译成Sequelize。我已将关联中涉及的三个表关联起来:

tracks.belongsToMany(tracks_playlists, { foreignKey: 'track_id' });
tracks.belongsToMany(tracks_meta, { foreignKey: 'track_id' });
tracks_meta.belongsToMany(tracks_playlists, { foreignKey: 'track_id'});

这是原始查询有效

SELECT tracks_playlists.playlist_id, tracks_playlists.track_id,  tracks.track, tracks.track_type, tracks_meta.status, tracks_meta.app_id, tracks_meta.description, tracks_meta.ip 
FROM tracks_playlists 
INNER JOIN tracks on tracks_playlists.track_id = tracks.track_id 
INNER JOIN tracks_meta on tracks.track_id = tracks_meta.track_id 
WHERE tracks_playlists.playlist_id = 4;

当我尝试运行以下代码时

self.tracks_playlists_table.find({
     where: {
              playlist_id: 4
            },
              include: [{
                model: self.tracks_table
              }]
            })
              .then(function(resp) {
                  console.log(resp);
              });

它吐出了这个错误:

relation "playlists.trackstracks_playlists" does not exist

这是从我的代码生成的查询:

SELECT "TracksPlaylists".*, "Tracks"."track_id" AS "Tracks.track_id", 

"Tracks"."track" AS "Tracks.track", "Tracks"."track_type" AS "Tracks.track_type", "Tracks"."created" AS "Tracks.created", "Tracks"."updated" AS "Tracks.updated", "Tracks.trackstracks_playlists"."created" AS "Tracks.trackstracks_playlists.created", "Tracks.trackstracks_playlists"."updated" AS "Tracks.trackstracks_playlists.updated", "Tracks.trackstracks_playlists"."track_id" AS "Tracks.trackstracks_playlists.track_id" 
FROM (SELECT "TracksPlaylists"."track_playlist_id", "TracksPlaylists"."track_id", "TracksPlaylists"."playlist_id", "TracksPlaylists"."created", "TracksPlaylists"."updated" 
FROM "playlists"."tracks_playlists" AS "TracksPlaylists" 
WHERE "TracksPlaylists"."playlist_id" = 4 LIMIT 1) AS "TracksPlaylists"
LEFT OUTER JOIN ("playlists"."trackstracks_playlists" AS "Tracks.trackstracks_playlists" 
INNER JOIN "playlists"."tracks" AS "Tracks" 
ON "Tracks"."track_id" = "Tracks.trackstracks_playlists"."track_id") 
ON "TracksPlaylists"."track_playlist_id" = "Tracks.trackstracks_playlists"."track_id";

为什么要创建列"trackstracks_playlists"

0 个答案:

没有答案