javascript - 如何将mysql查询转换为sequelize

标签 javascript mysql sequelize.js

我需要使用sequelize执行此查询:

SELECT movie, genre FROM `yt_movies` M 
LEFT JOIN `genres_link` GL ON M.id = GL.movie_id
WHERE M.id = 1098

我试过了

const YtMovies = db.yt_movies;
const Genres = db.genres;
const GenresLink = db.genres_link;

YtMovies.hasMany(GenresLink, { as: 'GL' });
YtMovies.hasMany(Genres, { as: 'G' });


const res = await db.yt_movies.findAll({
    attributes: ['movie'],
    where: { id: movie_id },
    include: [
        {
            model: db.genres_link,
            as: 'GL',
            required: false,
            // where: { movie_id },
            attributes: ['genre_id'],
        },

    ],
}

但它返回

SELECT
`yt_movies`.`id`,
`yt_movies`.`movie`,
`GL`.`id` AS `GL.id`,
`GL`.`genre_id` AS `GL.genre_id`
FROM `yt_movies` AS `yt_movies`
LEFT OUTER JOIN `genres_link` AS `GL` 
ON `yt_movies`.`id` = `GL`.`yt_movie_id` WHERE `yt_movies`.`id` = 1098;

最后一个字符串两行不正确,我期望 movie_id 而不是 yt_movie_id。项目中没有名称为 yt_movie_id 的列

LEFT JOIN `genres_link` GL
ON `yt_movies`.id = `GL`.`movie_id` WHERE `yt_movies`.`id` = 1098;

请停止 谢谢!

最佳答案

如果您想使用特定列进行关联,则需要提供 sourceKey 和foreignKey 选项。

试试这个:

YtMovies.hasMany(GenresLink, { as: 'GL' , foreignKey: 'movie_id'})

关于javascript - 如何将mysql查询转换为sequelize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55338777/

相关文章:

javascript - Modal 关闭时播放 Bootstrap 轮播

node.js - Sequelize 使用同步时定义复数表

reactjs - 我必须绘制收入和支出图表,只想绘制当年的图表。 react Sequelize

python - 当我的 python 程序与 mysql 一起工作时,出现一个非常奇怪的错误

javascript - Sequelize 和 Typescript 的外键

javascript - 具有回调行为的 jQuery .attr()

javascript - 如何在 Bootstrap TreeView 中按ID选择节点?

javascript - 使用js出现php错误

php - 如何为数据库中的用户和管理员建模?

mysql - 无法使用包含子查询的查询创建 View ,我该怎么做?