如何在Sequelize.js中编写等效的MySQL查询?

时间:2019-02-11 09:03:01

标签: mysql sequelize.js

我有以下三个表TypeMasterConfig,其中TypeMaster使用Type_ID列相互关联。

在第三张表Config中,一条记录可以引用多于1条Master记录,因此Master表ID以逗号分隔的形式放在列Master_IDS

Type
---------------
ID    Type_Name

1     Flat

2     Round

3     Solid


Master
------------------------
ID  Type_ID  Master_Name

1   1        Affix

2   1        Super

3   3        Maven

4   2        Baleno


Config
-----------------------------
ID   Config_Name   Master_IDS

1    Raven         1,3

2    Surplus       3,2

我编写了一个MySQL查询,该查询工作正常并且给出了预期的结果。

SELECT c.Config_Name, t.Type_Name, m.Master_Name 
FROM
Type t inner join Master m on t.ID = m.Type_ID
inner join Config c ON FIND_IN_SET(m.ID, c.Master_IDS) > 0;


---------------------------------------------
ID     Config_Name   Type_Name    Master_Name

1      Raven         Flat         Affix

2      Raven         Solid        Maven

3      Surplus       Solid        Maven

4      Surplus       Round        Super

我尝试过类似的

mydb.Type.findAll({
        include: [
            {
                model: mydb.Master,
                include: [
                    {
                        model: mydb.Config,
                        where: Sequelize.where(Sequelize.fn('FIND_IN_SET', mydb.Master.ID, Sequelize.col('MasterIds')), '>', 0)
                    }
                ]
            }
        ]
    })

它不起作用并引发错误SequelizeEagerLoadingError:配置未与Master关联

我是Sequelize的新手,因此无法使用Sequelize.js语法为上述选择查询找到更多解决方案。

0 个答案:

没有答案