TypeORM v0.3.10如何执行原生SQL?getManager已弃用
TypeORM v0.3.x 替代弃用的getManager()执行原生SQL的方法
在TypeORM v0.3+版本中,getManager()已被移除,你可以通过以下几种方式实现相同的原生SQL查询功能:
通过DataSource实例获取EntityManager
首先确保你已经初始化了DataSource,之后通过它的manager属性拿到EntityManager,再调用query方法:import { DataSource } from "typeorm"; // 初始化数据源(项目启动时执行一次即可) const AppDataSource = new DataSource({ type: "mysql", // 根据你的数据库类型调整 host: "localhost", port: 3306, username: "root", password: "your_password", database: "your_db", entities: [/* 你的实体类 */], }); await AppDataSource.initialize(); // 执行原生SQL const users = await AppDataSource.manager.query("SELECT * FROM users");依赖注入环境中直接使用EntityManager
如果是在NestJS这类依赖注入的框架里,可以直接注入EntityManager来使用:import { Injectable } from "@nestjs/common"; import { EntityManager } from "typeorm"; @Injectable() export class UserService { constructor(private readonly entityManager: EntityManager) {} async getUsers() { return await this.entityManager.query("SELECT * FROM users"); } }通过Repository执行原生SQL
你也可以针对特定实体的Repository调用query方法,效果完全一致:const userRepository = AppDataSource.getRepository(User); const users = await userRepository.query("SELECT * FROM users");
以上几种方式都能替代原来的getManager().query(),实现原生SQL查询的功能。
内容的提问来源于stack exchange,提问作者StormTrooper
相关产品推荐
相关产品推荐

