TypeORM是否支持输入和输出的原始SQL查询?

Roe*_*oel 7 orm typeorm

我想知道是否有一个TypeORM的功能支持插入更新删除选择等的原始SQL查询.

use*_*422 20

试试这个(2022 年 4 月,typeorm ^0.3.6)

import { DataSource } from "typeorm";

(async () => {
    const AppDatasource = new DataSource({
        type: "mysql",
        host: "localhost",
        port: 3306,
        username: "root",
        password: "root",
        database: "your-database",
        synchronize: false,
        logging: false,
        entities: ['src/entity/**/*.ts']
    })
    const appDataSource = await AppDataSource.initialize();
    const queryRunner = await appDataSource.createQueryRunner();
    var result = await queryRunner.manager.query(
        `SELECT * FROM your-table LIMIT 100`
    );
    await console.log(result)
})()
Run Code Online (Sandbox Code Playgroud)


Roe*_*oel 17

根据此问题评论,TypeORM使您可以对心脏内容使用任何查询.使用entityManager.query()这是文档.

UPDATE

上面的链接已经过时,请尝试使用entity-manager-api.

const rawData = await manager.query(`SELECT * FROM USERS`);
Run Code Online (Sandbox Code Playgroud)

  • 上面的doc链接已损坏/已更改。当前网址:http://typeorm.io/#/entity-manager-api (2认同)
  • 另一个相关问题:从`Query` 返回的结果是`OkPacket` 类型。我用谷歌搜索,只找到了 *one* 页,它与 typeorm 无关。你知道我在哪里可以找到更多关于“OkPacket”的信息吗? (2认同)

Rub*_*nez 9

2020 年更新,entityManager.query() 基于 EntityManager 类的 entityManager 对我不起作用,所以必须这样做:

  import { getManager } from 'typeorm';

  const entityManager = getManager();
  const someQuery = entityManager.query(`
  SELECT 
    fw."X",
    fw."Y",
    ew.*
  FROM "table1" as fw
  JOIN "table2" as ew
    ON fw."X" = $1 AND ew.id = fw."Y";
  `, [param1]);
Run Code Online (Sandbox Code Playgroud)

https://orkhan.gitbook.io/typeorm/docs/working-with-entity-manager