Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Sequelize-自定义运算符_Mysql_Sql_Sequelize.js - Fatal编程技术网

Mysql Sequelize-自定义运算符

Mysql Sequelize-自定义运算符,mysql,sql,sequelize.js,Mysql,Sql,Sequelize.js,我对在Sequelize ORM的使用中添加几个自定义操作符感兴趣。具体地说,我想添加模拟Django实现的and查找操作符的操作符。查看Sequelize的内部结构,我似乎找不到注入这种逻辑的地方。简而言之,我想实现的功能如下: { stringField: { [Op.startsWith]: 'bl' } } 生成所需的 WHERE stringField LIKE 'bl%' 我知道,在文档中,所有示例都显示手动添加%符号,但出于我的目的,我希望能够根

我对在Sequelize ORM的使用中添加几个自定义操作符感兴趣。具体地说,我想添加模拟Django实现的and查找操作符的操作符。查看Sequelize的内部结构,我似乎找不到注入这种逻辑的地方。简而言之,我想实现的功能如下:

{
    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
,那将是一个很好的方便。