请教老师
来源:10-12 查询进阶:queryBuilder及几种JOIN的学习(2)
LinkeZ
2023-05-04
你好老师,我在写这节课的代码时其中一段是这样的写的:
Object.keys(obj).forEach((key) => {
if (obj[key]) {
queryBuilder.andWhere(`${key} = :${key}`, { key: obj[key] });
}
});
其中{ key: obj[key] }中的key没有加[],然后就报错了:
error: 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 ':profile.gender AND `roles`.`id` = :roles.id' at line 1
例如这里的key为user.username,值为’123’:queryBuilder.andWhere('user.username = :user.username', { user.username: '123' });
如果加上[]应该是:queryBuilder.andWhere('user.username = :user.username', { '123': '123' });
还请老师麻烦解答一下,我有些迷惑了。
写回答
1回答
-
在这段代码中,{ key: obj[key] } 中的 key 是一个字符串,它用于作为参数对象中的属性名。因此,在这个对象字面量中,key 会被解析为字符串 "key" 而不是变量 key 所引用的字符串值。 这就可能导致了问题!
queryBuilder.andWhere(`${key} = :${key}`, { [key]: obj[key] }); 像课程中的写法!
022023-06-05
相似问题