我想在服务器插件中设置与 PostgreDB 的连接,以便我可以在需要时使用它(我使用 pg-promise 因为我发现命名参数更方便)。
在
~/server/plugins/connectdb.ts
:
import pgPromise from 'pg-promise'
export default defineNitroPlugin(() => {
console.log('Initializing DB connection')
const pgp = pgPromise({})
try {
const db = pgp('postgres://user:pwd@localhost:5432/mydb')
} catch (error) {
console.error("Error: "+error);
return process.exit(1)
}
})
然后在
~/api/getlist.ts
:
export default defineEventHandler((event) => {
console.log(db);
})
但是这里
db
是未知的。如果我在初始化后运行查询,我可以在 Postgres 日志中看到连接。我尝试添加:
export let db;
在
import
和 export default
之间(并在代码中将 const db
更改为 let db
),但这不会改变任何内容。我想我想要的是一个全局变量来存储连接。
我定义了一个服务器实用程序,它运行得很好:
~/server/utils/dbconnect.js
import pgPromise from 'pg-promise'
const pgp = pgPromise({})
export let usePg = pgp('postgres://user:pwd@localhost:5432/mydb')
然后自动导入功能就发挥了它的魔力,
usePg
随处可用。