Mysql Sequelize-自定义运算符
我对在Sequelize ORM的使用中添加几个自定义操作符感兴趣。具体地说,我想添加模拟Django实现的and查找操作符的操作符。查看Sequelize的内部结构,我似乎找不到注入这种逻辑的地方。简而言之,我想实现的功能如下:Mysql Sequelize-自定义运算符,mysql,sql,sequelize.js,Mysql,Sql,Sequelize.js,我对在Sequelize ORM的使用中添加几个自定义操作符感兴趣。具体地说,我想添加模拟Django实现的and查找操作符的操作符。查看Sequelize的内部结构,我似乎找不到注入这种逻辑的地方。简而言之,我想实现的功能如下: { stringField: { [Op.startsWith]: 'bl' } } 生成所需的 WHERE stringField LIKE 'bl%' 我知道,在文档中,所有示例都显示手动添加%符号,但出于我的目的,我希望能够根
{
stringField: {
[Op.startsWith]: 'bl'
}
}
生成所需的
WHERE stringField LIKE 'bl%'
我知道,在文档中,所有示例都显示手动添加
%
符号,但出于我的目的,我希望能够根据所使用的运算符动态包装该值。此功能不可用。我们通过在sequelize ORM之前应用一些中间件来解决这个问题,该ORM将“自定义”操作符转换为实际操作符
[Symbol.for('substring')]: value => ({[Sequelize.Op.like]: `%${value}%`})
使用当前版本的sequelize,您应该能够做到这一点
Post.findAll(
{
where: {
someAttribute: {
$startsWith: 'my name' // or from the request body field value
}
}
}
)
这可以从更多操作员的sequelize文档中找到
否则,您可以使用旧版本替换$startsWith,以满足您的需要
[Op.startsWith] : "field value"
我认为这将意味着扩展库的主要查询生成器逻辑,这可能相当困难。仅仅使用
Op.like
的缺点是什么?好吧,缺点是目前,为了实现一些查询参数过滤的动态功能,我们有一种机制,必须手动为某些字段指定服务器应该将数据值变为${value}%
。如果有一个能自动为我们包装的Op.startswith
,那将是一个很好的方便。