我正在尝试获取基于id
的用户示例(对于email
等其他属性也是如此。在服务内部,这是我的代码:
@Injectable()
export class UserService {
@InjectRepository(User)
private readonly repository: Repository<User>;
async findOne(id: number): Promise<User> {
const user = await this.repository.findOne(id);
return user;
}
}
我的用户实体是:
@Entity()
export class User {
@PrimaryGeneratedColumn()
public id: number;
@Column({ type: 'varchar', length: 120 })
public name: string;
@Column({ type: 'varchar', length: 120 })
public email: string;
}
问题是我总是得到这个错误:src/api/user/user.service.ts - error TS2559: Type 'number' has no properties in common with type 'FindOneOptions<User>'.
其他方法(如getAll
)工作得很好:
public getAllUsers(): Promise<User[]> {
return this.repository.find();
}
6条答案
按热度按时间aamkag611#
您使用的是
typeorm
的最新版本吗?然后将其降级为typeorm@0.2
,因为@nestjs/typeorm@8.0
可能还不支持最新版本。你可以在这里阅读typeorm@0.3
的变化:https://github.com/typeorm/typeorm/releases/tag/0.3.0bkhjykvo2#
typeorm
中有一些突破性的变化。我不建议降级,而是检查最新的方法。findOne(id);
现在更改为而
find()
现在请查看this link了解更多信息。
9wbgstp73#
实际上,您不需要降级
typeorm
包。通过以下方式将findOne
更改为:zbsbpyhn4#
签入
package.json
文件,并用这个"typeorm": "^0.2.34"
替换您的typeform版本vh0rcniy5#
问题是typeform版本,请尝试typeorm版本0.2.25,它将正常工作
6psbrbz96#
还有人能解释一下吗。我正在查看一个代码,其中
这就完成了。虽然它不起作用,但为什么我们要将数字id声明为
FindOneOptions<User>