如果不使用$like
查询是没问题的,但是业务需要模糊搜索功能。
一旦使用$like
就Invalid value
连接数据库
var sequelize = new Sequelize('data', 'root', 'Root123', {
host: 'localhost',
dialect: 'mysql',
dialectOptions: {
charset: 'utf8mb4'
},
pool: {
max: 5, // 连接池中最大连接数量
min: 0, // 连接池中最小连接数量
idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
},
operatorsAliases: false,
});
定义模型
var patient = sequelize.define('patient', {
user: Sequelize.TEXT,
sex: Sequelize.STRING,
age: Sequelize.INTEGER,
num: Sequelize.INTEGER,
bed: Sequelize.INTEGER,
department: Sequelize.STRING,
}, {
// 不加会导致出现复数users未找到的错误
freezeTableName: true,
timestamps: false
});
patient.removeAttribute('id')
patient.removeAttribute('createdAt')
patient.removeAttribute('updatedAt')
查询
router.post("/searchPatient", function (req, res, next) {
console.log(req.body.val)
patient.findAll({
where: {
num: {
$gte: 4
}
/* $or: [{
user: req.body.val
},
{
num: req.body.val
}
] */
}
}).then(function (doc) {
if (doc.length != 0) {
console.log(doc)
} else {
// ...
}
}).catch(function (err) {
console.log('错误' + err)
})
});
提示错误Error: Invalid value { '$gte': 4 }
中文文档看漏了,现在用
const Op = Sequelize.Op;[Op.or]: [{}]
去筛选。。