d1 lazy
This commit is contained in:
+13
-2
@@ -54,8 +54,14 @@ function getD1Adapter(): any {
|
|||||||
|
|
||||||
// 生产环境:Cloudflare Workers/Pages
|
// 生产环境:Cloudflare Workers/Pages
|
||||||
if (isCloudflare) {
|
if (isCloudflare) {
|
||||||
|
// 创建一个懒加载的适配器,延迟到实际使用时才获取 D1 绑定
|
||||||
|
let cachedAdapter: any = null;
|
||||||
|
|
||||||
|
return new Proxy({}, {
|
||||||
|
get(target, prop) {
|
||||||
|
// 懒加载:第一次访问时才获取真实的 D1 适配器
|
||||||
|
if (!cachedAdapter) {
|
||||||
try {
|
try {
|
||||||
// 在 Cloudflare 环境中,通过 getCloudflareContext 获取 D1 绑定
|
|
||||||
const { getCloudflareContext } = require('@opennextjs/cloudflare');
|
const { getCloudflareContext } = require('@opennextjs/cloudflare');
|
||||||
const { env } = getCloudflareContext();
|
const { env } = getCloudflareContext();
|
||||||
|
|
||||||
@@ -64,13 +70,18 @@ function getD1Adapter(): any {
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log('Using Cloudflare D1 database');
|
console.log('Using Cloudflare D1 database');
|
||||||
return new CloudflareD1Adapter(env.DB);
|
cachedAdapter = new CloudflareD1Adapter(env.DB);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to initialize Cloudflare D1:', error);
|
console.error('Failed to initialize Cloudflare D1:', error);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return cachedAdapter[prop];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 开发环境:better-sqlite3
|
// 开发环境:better-sqlite3
|
||||||
const Database = require('better-sqlite3');
|
const Database = require('better-sqlite3');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|||||||
Reference in New Issue
Block a user