mysql Sequelize findAll不检索预期记录

vwkv1x7d  于 2023-01-16  发布在  Mysql
关注(0)|答案(1)|浏览(127)

我正在使用Mysql 8.1的Sequelize ORM(v5.21.4),当调用方法时,我的Sequelize模型的findAll不会检索所有记录,当在编辑器上执行相同的查询时,Mysql返回更多。
cursoSenceModel.js

const CursoSenceModel = sequelize.define('curso', {
id:{
    type:DataTypes.INTEGER,
    field:'cs_id',
    primaryKey:true,
    autoIncrement: true
},
codigoCurso:{
    type:DataTypes.STRING,
    field:'cuse_id',
    allowNull: false
},
rutOtec:{
    type:DataTypes.STRING,
    field:'cuse_rut_otec'
},
dvOtec:{
    type:DataTypes.STRING,
    field:'cuse_dv_otec'
},
razonSocial:{
    type:DataTypes.STRING,
    field:'cuse_nombre_otec'
},
acreditacion:{
    type:DataTypes.DATE,
    field:'cuse_acreditacion'
},
ingresoSolicitud:{
    type:DataTypes.DATE,
    field:'cuse_ingreso_solicitud'
},
terminoVigencia:{
    type:DataTypes.DATE,
    field:'cuse_termino_vigencia'
},
comuna:{
    type:DataTypes.INTEGER,
    field:'comu_id'
},
emailOtec:{
    type:DataTypes.STRING,
    field:'cuse_email_otec'
},
webOtec:{
    type:DataTypes.STRING,
    field:'cuse_web_otec'
},
horasTeoricas:{
    type:DataTypes.DECIMAL,
    field:'cuse_horas_teoricas'
},
horasPractica:{
    type:DataTypes.DECIMAL,
    field:'cuse_horas_practicas'
},
horasElearning:{
    type:DataTypes.DECIMAL,
    field:'cuse_horas_elearning'
},
participantes:{
    type:DataTypes.INTEGER,
    field:'cuse_participantes'
},
area:{
    type:DataTypes.STRING,
    field:'cuse_area'
},
especialidad:{
    type:DataTypes.STRING,
    field:'cuse_especialidad'
},
objetivoCurso:{
    type:DataTypes.TEXT,
    field:'cuse_objetivo_curso'
},
modalidadInstruccion:{
    type:DataTypes.STRING,
    field:'cuse_modalidad_instruccion'
},
montoPersonalInstruccion:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_personal_instruccion'
},
montoMaterialesConsumo:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_materiales_consumo'
},
montoMaterialDidactico:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_material_didactico'
},
montoUtilizacionLocal:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_utilizacion_local'
},
montoUtilizacionEquipos:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_utilizacion_equipos'
},
montoMovimientosViaticoTraslado:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_movimientos_viatico_traslado'
},
montoGastosGenerales:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_gastos_generales'
},
montoUtilidad:{
    type:DataTypes.DECIMAL,
    field:'cuse_monto_utilidad'
},
valorTotalCurso:{
    type:DataTypes.DECIMAL,
    field:'cuse_valor_total_curso'
},
valorEfectivoParticipante:{
    type:DataTypes.DECIMAL,
    field:'cuse_valor_efectivo_participante'
},
valorImputableParticipante:{
    type:DataTypes.DECIMAL,
    field:'cuse_valor_imputable_participante'
},
ultimaActualizacion:{
    type:DataTypes.DATE,
    field:'cuse_ultima_actualizacion',
    allowNull: false
},
nombre:{
    type:DataTypes.STRING,
    field:'cuse_nombre'
},
direccionOtec:{
    type:DataTypes.STRING,
    field:'cuse_direccion_otec'
},
fonoOtec:{
    type:DataTypes.STRING,
    field:'cuse_fono_otec'
},
codigo:{
    type:DataTypes.STRING,
    field:'cuse_codigo'
},
vigencia:{
    type:DataTypes.BIGINT,
    field:'cuse_vigencia'
},
clienteComercial:{
    type:DataTypes.BIGINT,
    field:'cuse_id_cliente_comercial'
},
tipoCurso:{
    type:DataTypes.STRING,
    field:'cuse_tipo_curso'
},
tipoElearning:{
    type:DataTypes.STRING,
    field:'cuse_tipo_elearning'
},
tipoOtec:{
    type:DataTypes.TINYINT,
    field:'cuse_tipo_otec'
},
}, {
    tableName: 'sgc_cursos_sence',
    timestamps: false
});

CursoSenceModel.sync();

module.exports = CursoSenceModel;

代码

const cursosBD = await CursoSenceModel.findAll({
        attributes:['codigoCurso'],
        where:{
            codigoCurso:ids
        },
        raw:true
    });
console.log('cursosSence',cursosBD);

cursosBD返回17条记录,但对Mysql的相同查询返回40条记录。
Query result
我已经尝试升级到Sequelize v6,但同样的问题.

7ajki6be

7ajki6be1#

在Sequelize v5中,您需要添加Op.in操作符,以下是代码

const Sequelize = require('Sequelize');

const { Op } = Sequelize;
const cursosBD = await CursoSenceModel.findAll({
        attributes:['codigoCurso'],
        where:{
            codigoCurso:{[Op.in]: ids}
        },
        raw:true
    });
console.log('cursosSence',cursosBD);

相关问题