sequelize-custom操作符

hiz5n14c  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(277)

我有兴趣在sequelize orm的用法中添加几个自定义操作符。具体来说,我想添加一些操作符,这些操作符模仿django实现的startswith和endswith查找操作符。通过sequelize的内部结构,我似乎找不到注入这种逻辑的地方。简而言之,我想实现的功能如下:

{
    stringField: {
        [Op.startsWith]: 'bl'
    }
}

生成所需的sql

WHERE stringField LIKE 'bl%'

我知道文档中的所有示例都显示了手动附加 % 但出于我的目的,我希望能够基于所使用的运算符动态 Package 值。

0md85ypi

0md85ypi1#

你应该可以用最新版本的sequelize做这个,

Post.findAll(
  {
    where: {
      someAttribute: {
       $startsWith: 'my name' // or from the request body field value
     }
    }
  }
)

这可以从sequelize文档中找到。后继运算符
否则您可以将$startswith替换为旧版本以满足您的需要,

[Op.startsWith] : "field value"
az31mfrm

az31mfrm2#

此功能不可用。我们在sequelize orm之前应用了一些中间件来解决这个问题,该orm将一个“定制”操作符转换为一个真正的操作符。

[Symbol.for('substring')]: value => ({[Sequelize.Op.like]: `%${value}%`})

相关问题