Mysql 获取HasOne关系中的关联错误

Mysql 获取HasOne关系中的关联错误,mysql,node.js,orm,sequelize.js,associations,Mysql,Node.js,Orm,Sequelize.js,Associations,我的桌子 下面是分类的_模板模型,它具有ad_type_id作为外键并与ad_type关联 'use strict'; module.exports = (sequelize, DataTypes) => { let classified_template = sequelize.define('classified_template', { id: { type: DataTypes.INTEGER, p

我的桌子
下面是分类的_模板模型,它具有ad_type_id作为外键并与ad_type关联

    'use strict';
module.exports = (sequelize, DataTypes) => {  
    let classified_template = sequelize.define('classified_template', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        temp_body: DataTypes.STRING,
        active: {
            type: DataTypes.BOOLEAN,
            defaultValue: true
        },
        is_deleted: {
            type: DataTypes.BOOLEAN,
            defaultValue: false
        },
        ad_type_id:DataTypes.INTEGER,
    }, {
        tableName: 'classified_template'
    });
    classified_template.associate = (models) => {
        classified_template.hasOne(models.ad_type, {
            foreignKey: 'id',
           sourceKey: 'ad_type_id',
        }); 
    };
    return classified_template
};
下面是我的广告类型模型

  'use strict';
module.exports = (sequelize, DataTypes) => {
    let ad_type = sequelize.define('ad_type', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        name: DataTypes.STRING,
        active: {
            type: DataTypes.BOOLEAN,
            defaultValue: true
        },
        is_deleted: {
            type: DataTypes.BOOLEAN,
            defaultValue: false
        },
    }, {
        tableName: 'ad_type'
    });
    return ad_type
};
我的关联查询

   const result = await adTypeModel.findAndCountAll({
    where: {
      is_deleted: false
    },
    include: {
      model: classifiedTemplateModel,// included the model
      where: {
         is_deleted: false
       },
    },
  });  
错误:“消息”:“分类模板未与广告类型关联!”

我不知道我哪里做错了

请标记能提供帮助的人

我想
ad\u type
classified\u模板
之间的关联是一对一关联。您还需要添加以下关联:

AdType.belongsTo(分类模板,{foreignKey:'id',targetKey:'ad_type_id'});
以下是一个工作示例:

从'../../db'导入{sequelize};
从“sequelize”导入{Model,DataTypes};
类ClassifiedTemplate扩展模型{}
ClassifiedTemplate.init(
{
身份证:{
类型:DataTypes.INTEGER,
primaryKey:没错,
自动递增:真,
},
temp_body:DataTypes.STRING,
活动:{
类型:DataTypes.BOOLEAN,
defaultValue:true,
},
是否删除了{
类型:DataTypes.BOOLEAN,
defaultValue:false,
},
广告类型标识:{
类型:DataTypes.INTEGER,
独一无二:没错,
},
},
{sequelize,modelName:'classified_template',tableName:'classified_template'},
);
类AdType扩展模型{}
AdType.init(
{
身份证:{
类型:DataTypes.INTEGER,
primaryKey:没错,
自动递增:真,
},
名称:DataTypes.STRING,
活动:{
类型:DataTypes.BOOLEAN,
defaultValue:true,
},
是否删除了{
类型:DataTypes.BOOLEAN,
defaultValue:false,
},
},
{sequelize,modelName:'ad_type',tableName:'ad_type'},
);
hasOne(AdType,{foreignKey:'id',sourceKey:'ad_type_id'});
belongsTo(分类模板,{foreignKey:'id',targetKey:'ad_type_id'});
(异步函数测试(){
试一试{
//创建表
wait sequelize.sync({force:true});
//种子
等待ClassifiedTemplate.create(
{
临时主体:“临时主体”,
广告类型标识:1,
ad_类型:{
名称:'广告类型名称',
},
},
{include:[AdType]},
);
//试验
const result=await AdType.findAndCountAll({
其中:{
是否删除:false,
},
包括:[
{
模型:分类模板,
其中:{
是否删除:false,
},
},
],
});
log('result:',result);
}捕获(错误){
console.log(错误);
}最后{
等待续集。关闭();
}
})();
执行结果:

执行(默认):如果存在“ad_类型”级联,则删除表;
执行(默认):如果存在“分类模板”级联,则删除表;
执行(默认):如果存在“分类模板”级联,则删除表;
执行(默认):创建表,如果不存在“分类模板”(“id”序列、“temp_body”VARCHAR(255)、“active”布尔默认值true、“is_deleted”布尔默认值false、“ad_type_id”整数唯一,主键(“id”);
执行(默认):选择i.relname作为名称,ix.indprimary作为主要,ix.indunique作为唯一,ix.indkey作为indkey,array_agg(a.attnum)作为列索引,array_agg(a.attname)作为列名称,pg_get_indexdef(ix.indexrelid)作为pg_class t,pg_class i,pg_index ix的定义,pg_属性a,其中t.oid=ix.indrelid和i.oid=ix.indexrelid和a.attrelid=t.oid和t.relkind='r'和t.relname='classified_template'按i.relname分组,ix.indexrelid,ix.indisprimary,ix.indisunique,ix.indkey按i.relname排序;
执行(默认):如果存在“ad_类型”级联,则删除表;
执行(默认):创建表,如果不存在“ad_类型”(“id”串行引用“分类_模板”(“ad_类型_id”)在更新级联上删除级联,“名称”VARCHAR(255),“活动”布尔默认值true,“is_删除”布尔默认值false,主键(“id”);
执行(默认):选择i.relname作为名称,ix.indprimary作为主要,ix.indunique作为唯一,ix.indkey作为indkey,array_agg(a.attnum)作为列索引,array_agg(a.attname)作为列名称,pg_get_indexdef(ix.indexrelid)作为pg_class t,pg_class i,pg_index ix的定义,pg_属性a,其中t.oid=ix.indrelid和i.oid=ix.indexrelid和a.attrelid=t.oid和t.relkind='r'和t.relname='ad_type'按i.relname分组,ix.indexrelid,ix.indisprimary,ix.indisunique,ix.indkey按i.relname排序;
执行(默认):插入“分类模板”(“id”、“临时主体”、“活动”、“已删除”、“ad类型”id)值(默认值,$1、$2、$3、$4)返回*;
执行(默认):在“ad_类型”(“id”、“名称”、“活动”、“已删除”)中插入值($1、$2、$3、$4),返回*;
执行(默认):选择计数(“ad类型”。“id”)作为“计数”,从“ad类型”作为“ad类型”内部连接“分类模板”作为“分类模板”,从“ad类型”中选择“id”。“id”=“分类模板”。“ad类型id”和“分类模板”。“是否已删除”=false,其中“ad类型”。“是否已删除”=false;
执行(默认):选择“广告类型”,“id”,“广告类型”,“名称”,“广告类型”,“活动”,“广告类型”,“已删除”,“分类模板”,“id”为“分类模板.id”,“分类模板”,“临时模板”为“分类模板.临时模板”,“分类模板”,“活动”为“分类模板.活动”,“分类模板”为“已删除”“已分类模板。已删除”,“已分类模板”,“已分类模板”,“已分类模板id”为“已分类模板.已分类模板id”从“已分类类型”为“已分类类型”内部连接“已分类模板”为“已分类模板”,“已分类模板”,“已分类模板id”和“已分类模板”,“已删除类型”=false,其中“已删除类型”,“已删除”=false;
结果:{计数:1,
排:
[ad_类型{
数据值:[对象],
_previousDataValues:[对象],
_更改:{},
_modelOptions:[对象],
_选项:[对象],
isNewRecord:false,
分类模板:[classifi]