请教老师

来源: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

例如这里的keyuser.username,值为’123’:
queryBuilder.andWhere('user.username = :user.username', { user.username: '123' });
如果加上[]应该是:
queryBuilder.andWhere('user.username = :user.username', { '123': '123' });
还请老师麻烦解答一下,我有些迷惑了。

写回答

1回答

Brian

2023-05-05

在这段代码中,{ key: obj[key] } 中的 key 是一个字符串,它用于作为参数对象中的属性名。因此,在这个对象字面量中,key 会被解析为字符串 "key" 而不是变量 key 所引用的字符串值。 这就可能导致了问题!

queryBuilder.andWhere(`${key} = :${key}`, { [key]: obj[key] }); 像课程中的写法!

0
2
Brian
回复
LinkeZ
应该的,不谢
2023-06-05
共2条回复

NestJS 入门到实战 前端必学服务端新趋势

近几年快速发展的Node.js框架,掌握未来前端工程师后端开发能力

603 学习 · 249 问题

查看课程