mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-09 03:26:38 +08:00
mongodb
This commit is contained in:
parent
6189ff9be3
commit
10d0d32906
@ -1,28 +1,35 @@
|
||||
// 引入 `MongoClient` 类型,以便于类型注解
|
||||
import { MongoClient, MongoClientOptions } from "mongodb";
|
||||
import { MongoClient } from "mongodb";
|
||||
|
||||
// 使用 `process.env.MONGODB_URI` 的值初始化 URI 变量
|
||||
const uri: string | undefined = process.env.MONGODB_URI;
|
||||
// 定义 MongoClient 选项对象
|
||||
const options: MongoClientOptions = {};
|
||||
const uri = process.env.MONGODB_URI as string; // your mongodb connection string
|
||||
const options = {};
|
||||
|
||||
// 声明 client 和 clientPromise 变量,类型分别为 MongoClient 和 Promise<MongoClient>
|
||||
let client: MongoClient;
|
||||
let clientPromise: Promise<MongoClient>;
|
||||
|
||||
// 判断当前环境是否为开发环境
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
// 在开发模式下,使用全局变量,以便在 HMR (Hot Module Replacement) 导致的模块重新加载时保留值。
|
||||
if (!global._mongoClientPromise) {
|
||||
client = new MongoClient(uri!, options); // 使用非空断言运算符(!),因为我们已经检查了 uri 是否存在
|
||||
global._mongoClientPromise = client.connect();
|
||||
}
|
||||
clientPromise = global._mongoClientPromise;
|
||||
} else {
|
||||
// 在生产模式下,最好不要使用全局变量。
|
||||
client = new MongoClient(uri!, options); // 使用非空断言运算符(!),因为我们已经检查了 uri 是否存在
|
||||
clientPromise = client.connect();
|
||||
declare global {
|
||||
var _mongoClientPromise: Promise<MongoClient>;
|
||||
}
|
||||
|
||||
// 导出模块作用域的 MongoClient promise。通过在一个单独的模块中这样做,client 可以在函数之间共享。
|
||||
class Singleton {
|
||||
private static _instance: Singleton;
|
||||
private client: MongoClient;
|
||||
private clientPromise: Promise<MongoClient>;
|
||||
private constructor() {
|
||||
this.client = new MongoClient(uri, options);
|
||||
this.clientPromise = this.client.connect();
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
// In development mode, use a global variable so that the value
|
||||
// is preserved across module reloads caused by HMR (Hot Module Replacement).
|
||||
global._mongoClientPromise = this.clientPromise;
|
||||
}
|
||||
}
|
||||
|
||||
public static get instance() {
|
||||
if (!this._instance) {
|
||||
this._instance = new Singleton();
|
||||
}
|
||||
return this._instance.clientPromise;
|
||||
}
|
||||
}
|
||||
const clientPromise = Singleton.instance;
|
||||
|
||||
// Export a module-scoped MongoClient promise. By doing this in a
|
||||
// separate module, the client can be shared across functions.
|
||||
export default clientPromise;
|
||||
|
Loading…
Reference in New Issue
Block a user