如果我有以 12 作为输入的输入字段,我想搜索行 id = 123。现在我有
where: {
id: {
[Op.iLike]: `%${req.body.gaugeId}%`,
},
},
Run Code Online (Sandbox Code Playgroud)
如果我搜索文本字段,这有效,但它不适用于搜索整数字段。我知道这与铸造有关,但我可以找到一种方法来实现这一点。
想出了解决办法。我遇到了几个问题。
首先我不明白铸造是如何工作的。我需要投射一个续集列,并且要访问该列,您需要使用Model.column_name.
我遇到的第二个问题是因为我正在投射到string, 而不是varchar.
search(req, res) {
return Gauge.findAll({
where: sequelize.where(
sequelize.cast(sequelize.col('Gauge.id'), 'varchar'),
{[Op.iLike]: `%${req.body.gaugeId}%`}
),
}).then(gauges => {
res.status(200).send(gauges);
});
},
Run Code Online (Sandbox Code Playgroud)
如果您想使用sequelize.or,您可以执行以下操作:
return Gauge.findAll({
attributes: ['id', 'stationName'],
where: {
[Op.or]: [
{stationName: {[Op.iLike]: `%${req.body.keyWord}%`}},
sequelize.where(
sequelize.cast(sequelize.col('Gauge.id'), 'varchar'),
{[Op.iLike]: `%${req.body.keyWord}%`}
),
],
},
})
Run Code Online (Sandbox Code Playgroud)
在这里您可以找到更多。 https://github.com/sequelize/sequelize/issues/3565
| 归档时间: |
|
| 查看次数: |
3845 次 |
| 最近记录: |