gpt4 book ai didi

database - 如何在 nestJS 框架中注入(inject)纯数据库(无 ORM)?

转载 作者:行者123 更新时间:2023-12-05 01:23:36 24 4
gpt4 key购买 nike

我想使用 NestJS 框架。但更喜欢自己写 SQL 查询,而不是使用 ORM 的繁重接口(interface)。

我找了一些教程直接访问数据库的例子,但是没有使用NestJS的注入(inject)机制。因此,我正在尝试学习如何编写一个薄层的 Controller 和服务提供程序,这使我可以自由地将查询作为文本参数提供。会听取您的建议

最佳答案

假设您想要将普通 Postgres 与 nestJs(无 ORM)一起使用。

您可以执行以下步骤:

创建一个单独的数据库模块,然后创建并注入(inject)自定义提供程序

import { Module } from "@nestjs/common";
import { Pool } from "pg";
import { PG_CONNECTION } from "../constants";


export const PG_CONNECTION = 'PG_CONNECTION';

const dbProvider = {
provide: PG_CONNECTION,
useValue: new Pool({
user: "postgres",
host: "localhost",
database: "somedb",
password: "meh",
port: 5432,
}),
};

@Module({
providers: [dbProvider],
exports: [dbProvider],
})
export class DbModule {}


注意:请务必导出您的自定义提供者,因为我们在其他模块中需要此提供者(服务)。

之后,您可以通过导入 DbModule 轻松地将提供者(服务)注入(inject)到任何其他模块中


@Module({
providers: [AppService],
imports : [DbModule]
})
export class AppModule {}


之后,您可以轻松地注入(inject)提供程序并可以使用纯 SQL 查询执行数据库操作

import { Injectable, Inject } from '@nestjs/common';
import { PG_CONNECTION from './constants';

@Injectable()
export class AppService {
constructor(@Inject(PG_CONNECTION) private conn: any) {}

async getUsers() {
const res = await this.conn.query('SELECT * FROM users');
return res.rows;
}


}

希望这对您有所帮助!

您可以进一步阅读本文以获得更好的解释。引用:https://medium.com/@calleja.justin/using-plain-pg-with-nest-js-617ec32ec2c4

关于database - 如何在 nestJS 框架中注入(inject)纯数据库(无 ORM)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72217232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com