TypeORM中Repository find带where与select时报错问题排查
问题描述
目标SQL语句:
SELECT name from users WHERE flag = 1;
当前编写的TypeORM代码:
userRepository.find({ where: { flag: 1 }, select: { name: true } })
这段代码在移除select选项时可以正常执行,但添加后会报错,请问问题出在哪里?
问题原因与解决方案
问题出在select选项的写法上。TypeORM的find方法中,指定查询列的正确方式是使用字符串数组,而非对象形式。对象格式的select通常用于createQueryBuilder或特定查询方法的参数场景,并不适用于find方法的常规用法。
修正后的代码如下:
userRepository.find({ where: { flag: 1 }, select: ["name"] // 改为字符串数组形式 })
额外注意:如果你的TypeORM版本较旧,部分版本对find方法的select参数支持有限,字符串数组是兼容性最好的写法。同时要确保实体类中通过@Column()装饰器正确定义了name字段,避免因字段名不匹配引发报错。
内容的提问来源于stack exchange,提问作者StormTrooper
相关产品推荐
相关产品推荐

