[英]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.