我认为你缺少了一个连接到数据库的部分。从你上面提供的代码片段来看,似乎你尝试通过局部变量传递数据库连接信息,但是你需要传递的是数据库连接本身。
首先,你需要一个Postgres客户端。你可以使用任何一个你想用的,我会向你展示在这里找到的postgresjs包可能是什么样子的连接。
hooks.js
import postgres from 'postgres';
export const handle = async ({event, resolve}) => {
const sql = postgres('postgres://username:password@host:port/database');
event.locals = {
sql: sql
};
const response = await resolve(event);
return response;
};
您需要在连接字符串中填写数据库信息,就像上面一样,但现在您的端点将可以访问包含SQL连接的locals
对象。
接下来:
yourendpoint.js
export async function get({ locals }) {
const { sql } = locals;
const result = await sql`SELECT name, age FROM users`;
... code to work with result ...
};
您需要发送响应等其他内容的其余部分在
Sveltekit文档中有记录。重要的是,您正在
hooks.js
文件中设置连接,然后将其与请求一起传递给端点处理程序。这样可以将设置逻辑集中在一个地方。
此外,如果您不熟悉用于JavaScript的Postgres库,请尝试一些库。postgres.js旨在简单明了,
pg也是如此。您还可以升级到为您提供更多功能的库,例如
sequelize或
prisma。
我个人非常喜欢Prisma,但我鼓励您进行实验并找到最适合自己的库。