我有一张名为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),但我不知道为什么,因为地址是明确定义的,我正在按照链接中的文档完全按照它们使用它。有什么想法吗?
答案 0 :(得分:0)
我查看了any subqueries上的mysql文档,并说:
语法:
operand comparison_operator ANY(子查询)操作数IN(子查询) 操作数comparison_operator一些(子查询)where comparison_operator 是这些运营商之一:
=> < > =< =<> !=
运营商列表甚至不包括like
运营商。使用没有通配符的like
运算符有点无意义,因为它们与简单的=
非常相似(尽管不一样)。
我想说你需要in()
运算符($in
)来比较字符串和字符串列表。