我想使用 NestJS 框架。但更喜歡自己寫 SQL 查詢,不使用 ORM 的繁重介面。
我找到了一些教程,其中包含直接訪問資料庫的示例,但它們沒有使用 NestJS 的注入機制。所以,我正在嘗試學習如何撰寫一個薄薄的控制器和服務提供者層,這讓我可以自由地將查詢作為文本引數提供。將appriciate你的意見
uj5u.com熱心網友回復:
假設您想將普通 Postgres 與 nestJs 一起使用(沒有 ORM)。
您可以執行以下步驟:
創建一個單獨的資料庫模塊,然后創建并注入自定義提供程式
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輕松將該提供程式(服務)注入任何其他模塊
@Module({
providers: [AppService],
imports : [DbModule]
})
export class AppModule {}
之后,您可以輕松地注入提供程式,并可以使用普通 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/475577.html
