繁体   English   中英

排序查询符合$ LIKE的要求,但收到ER_PARSE_ERROR

[英]Sequelize query matches requirements for $LIKE but receives ER_PARSE_ERROR

我有一个名为MedicalStaff的表,以及一组可用于查询MedicalStaff的医生的电子邮件地址。 我想使用的findAll找到与该阵列中的任何比赛,它看起来像$这样的:{$任:[数组]}}操作中途描述了网页这里是这样做的最佳方法。

我有以下查询:

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),但我不确定为什么,因为地址定义明确,并且我正按照他们使用链接的方式完全遵循链接中的文档。 有任何想法吗?

我检查了关于任何子查询的 mysql文档,它说:

句法:

操作数comparison_operator ANY(子查询)操作数IN(子查询)操作数compare_operator SOME(子查询)其中compare_operator是以下运算符之一:

=> <> = <= <>!=

运算符列表甚至不包含like运算符。 在没有通配符的情况下使用like运算符是没有意义的,因为这与简单的=非常相似(尽管不一样)。

我会说您需要in()运算符( $in )将字符串与字符串列表进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM