繁体   English   中英

如何将我的 PostgreSQL 数据库连接到 Sveltekit 并运行查询?

[英]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 包的连接可能是什么样的

钩子.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对象。

下一个:

你的端点.js

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也是如此。 您还可以升级到为您提供更多功能的库,例如sequelizeprisma

我个人是 Prisma 的忠实粉丝,但我鼓励您尝试并找到最适合您的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM