首页 > 解决方案 > sequelize 中的嵌套查询

问题描述

我正在尝试通过 nodejs 中的 sequelize ORM 从我的 MySql 数据库中查询一些东西。

我的关联看起来像这样:

ResourceModel.belongsTo(models.ModuleM, {
    foreignKey: 'moduleId',
    sourceKey: 'id'
});

ResourceModel.hasMany(models.ResourceItemM, {
    foreignKey: 'resourceId',
    sourceKey: 'id'
});

ResourceModel.hasMany(models.ResourceComponentM, {
    foreignKey: 'resourceId',
    sourceKey: 'id'
});

我正在尝试使用以下方法获取我的资源的项目类型和模块名称:

ResourceModel.findAll({


limit: 5,
  attributes: [
    ['resource_name', 'RESOURCE NAME'],
    ['res_code', 'RESOURCE CODE']
  ],
  include: [
    {
      model: models.ModuleM,
      attributes: [
        ['module_name', 'MODULE']
      ]
    },
    {
      model: models.ResourceItemM,
      attributes: [
        ['item_type', 'ITEM TYPE']
      ]
    }
  ]
}).then((data)=> {
  console.log('data: ', data);
})
.catch((err)=> {
  console.log('Something went wrong: ', err);
})

现在,当我这样做时,我收到一条错误消息:Unknown column \'ResourceModel.moduleId\' in \'on clause\'',

当我在没有第二个包含对象的情况下执行此操作时,它可以正常工作,但这会失败。知道为什么吗?

标签: mysqlnode.jssequelize.js

解决方案


推荐阅读