我有兴趣在我们对Sequelize ORM的使用中添加几个自定义运算符。具体来说,我想添加模仿Django实现的startswith和endswith查找运算符的运算符。通过Sequelize的内部结构,我似乎找不到在哪里注入这种逻辑。简而言之,我想实现的功能类似于:
{
stringField: {
[Op.startsWith]: 'bl'
}
}
生成所需的sql
WHERE stringField LIKE 'bl%'
我知道在文档中所有示例都显示了手动添加%
符号的方法,但是出于我的目的,我希望能够根据所使用的运算符动态包装该值。
答案 0 :(得分:1)
您应该可以使用当前版本的sequelize来完成此操作,
Post.findAll(
{
where: {
someAttribute: {
$startsWith: 'my name' // or from the request body field value
}
}
}
)
这可以从此处的sequelize文档中找到,以了解更多操作符。 sequelize operators
否则,您可以将$ startsWith替换为适合您需要的旧版本,
[Op.startsWith] : "field value"
答案 1 :(得分:0)
此功能不可用。为此,我们通过在将“自定义”运算符转换为实际运算符的ORM序列化之前应用一些中间件来解决此问题。
[Symbol.for('substring')]: value => ({[Sequelize.Op.like]: `%${value}%`})