[英]How to connect my PostgreSQL database to Sveltekit and run queries?
仍在学习网络开发基础知识,所以请耐心等待我:)
我正在尝试将我的 postgres 数据库连接到我的网络应用程序。 根据这篇文章,我的hooks.js
连接设置如下:
export const handle = async ({event, resolve}) => {
event.locals = {
user: 'me',
host: 'localhost',
database: 'test',
password: 'password',
port: 1234,
}
const response = await resolve(event)
return response;
}
现在我正在尝试设置我的端点。 如何在端点中访问我的数据库并设置查询? 提前感谢您的回复或任何见解。
我认为您缺少连接到数据库的部分。 使用上面提供的代码片段,看起来您正试图通过 locals 变量传递数据库连接信息,但您需要传递的是数据库连接本身。
首先,您需要一个 Postgres 客户端。 您可以使用任何您想要的,我将向您展示与此处找到的 postgresjs 包的连接可能是什么样的
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
对象。
下一个:
export async function get({ locals }) {
// destructure to get the sql connection
const { sql } = locals;
// Do work with the connection
// different connection libraries will do this in different ways
// postgres.js uses tagged template literals,
// and you pass in sql statements
const result = await sql`SELECT name, age FROM users`;
// Now you have a result object that contains the query response
// Do what you need to do from here
... code to work with result ...
};
发送响应等所需的其余内容记录在Sveltekit 文档中。 不过,这里的关键点是您正在hooks.js
文件中设置连接,然后将其与请求一起传递给端点处理程序。 这将您的设置逻辑集中在一个地方。
此外,如果您不熟悉 Javascript 的 postgres 库,请尝试一些。 postgres.js 被设计为简单明了, pg也是如此。 您还可以升级到为您提供更多功能的库,例如sequelize或prisma
我个人是 Prisma 的忠实粉丝,但我鼓励您尝试并找到最适合您的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.