Sequelize查询匹配$ LIKE的要求,但接收ER_PARSE_ERROR

时间:2017-03-09 01:19:51

标签: javascript mysql sql database sequelize.js

我有一张名为MedicalStaff的表格,以及一系列医生的电子邮件地址,我可以用它来查询MedicalStaff。我想使用findAll查找与此数组的任何匹配,看起来像$ like:{$ any:[array]}}运算符描述在页面的中间here是执行此操作的最佳方法。 / p>

我有以下查询:

var address = ['BubGuy@mailinator.com', 'DumbTime@mailinator.com'];
sequelizeInstance.models.MedicalStaff.findAll({where: {email: {$like: { $any: address}}}})
    .then(function(doctors){
        console.log(doctors);
        ...
     }

并收到以下错误:

{ SequelizeDatabaseError: ER_PARSE_ERROR: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax
to use near '('BubGuy@mailinator.com','DumbTime@mailinator.com')' at line 1  
...
 code: 'ER_PARSE_ERROR',
 errno: 1064,
 sqlState: '42000',
 index: 0,
 sql: 'SELECT `name`, `email`, `password`, `salt`, `phoneNumber`, `position`, 
`authenticationCode`, `active`, `unassigned`, `resetPasswordToken`, 
`isVerified`, `resetPasswordExpires`, `createdAt`, `updatedAt`, `fk_id`, `fk_email` 
FROM `MedicalStaffs` AS `MedicalStaff` WHERE `MedicalStaff`.`email` 
LIKE ANY (\'BubGuy@mailinator.com\',\'DumbTime@mailinator.com\');' },

它表示一个解析错误(1064),但我不知道为什么,因为地址是明确定义的,我正在按照链接中的文档完全按照它们使用它。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我查看了any subqueries上的mysql文档,并说:

  

语法:

     

operand comparison_operator ANY(子查询)操作数IN(子查询)   操作数comparison_operator一些(子查询)where comparison_operator   是这些运营商之一:

     

=> < > =< =<> !=

运营商列表甚至不包括like运营商。使用没有通配符的like运算符有点无意义,因为它们与简单的=非常相似(尽管不一样)。

我想说你需要in()运算符($in)来比较字符串和字符串列表。