← Cloudflare Workers / workers / tutorials
Настройка и использование базы данных Prisma Postgres
Prisma Postgres ↗ представляет собой управляемую serverless-базу данных PostgreSQL. Она поддерживает такие возможности, как пулинг соединений, кеширование, подписки в реальном времени и рекомендации по оптимизации запросов.
В этом руководстве вы узнаете, как:
- Настройка проекта Cloudflare Workers с использованием Prisma ORM ↗.
- Создайте экземпляр Prisma Postgres с помощью Prisma CLI.
- Моделируйте данные и выполняйте миграции с помощью Prisma Postgres.
- Запрашивайте базу данных из Workers.
- Разверните Worker на Cloudflare.
Предварительные требования
Чтобы следовать этому руководству, убедитесь, что у вас есть следующее:
- Node.js
v18.18или более новой версии. - Активный Аккаунт Cloudflare ↗.
- Базовое знакомство с установкой и использованием приложений командной строки (CLI).
1. Создайте новый проект Worker
Начните с использования C3 чтобы создать проект Worker в командной строке:
npm create cloudflare@latest prisma-postgres-worker -- --type=hello-world --ts=true --git=true --deploy=falseЗатем перейдите в каталог проекта:
cd ./prisma-postgres-workerВаш первоначальный src/index.ts файл в настоящее время содержит простой обработчик запросов:
export default {
async fetch(request, env, ctx): Promise<Response> {
return new Response("Hello World!");
},
} satisfies ExportedHandler<Env>;2. Настройка Prisma в вашем проекте
На этом шаге вы настроите Prisma ORM с базой данных Prisma Postgres с помощью CLI. Затем вы создадите и выполните вспомогательные скрипты для создания таблиц в базе данных и сгенерируете клиент Prisma для работы с ней.
2.1. Установка необходимых зависимостей
Установите Prisma CLI как dev-зависимость:
npm i -D prismaУстановите Клиентское расширение Prisma Accelerate ↗ так как это требуется для Prisma Postgres:
npm i @prisma/extension-accelerateУстановите dotenv-cli пакет ↗ чтобы загрузить переменные окружения из .dev.vars:
npm i -D dotenv-cli2.2. Создание базы данных Prisma Postgres и инициализация Prisma
Инициализируйте Prisma в своём приложении:
npx prisma@latest init --dbЕсли у вас нет Prisma Data Platform ↗ аккаунта, или если вы не выполнили вход, команда предложит войти через один из доступных провайдеров аутентификации. Откроется окно браузера, где можно войти или создать аккаунт. После этого шага вернитесь в CLI.
После входа в систему (или если вход уже был выполнен) CLI предложит выбрать имя проекта и регион базы данных.
После завершения команды будут созданы:
- Проект в вашем Консоль платформы ↗ содержащий экземпляр базы данных Prisma Postgres.
- A
prismaпапка, содержащаяschema.prisma, где вы определите схему базы данных. - Одна
.envфайл в корне проекта, который будет содержать url базы данных Prisma PostgresDATABASE_URL=<your-prisma-postgres-database-url>.
Обратите внимание, что Cloudflare Workers не поддерживает .env файлы. Вы будете использовать файл под названием .dev.vars вместо .env файл, который был только что создан.
2.3. Подготовка переменных окружения
Переименуйте .env файл в корне вашего приложения, чтобы .dev.vars файле:
mv .env .dev.vars2.4. Применение изменений схемы базы данных
Откройте schema.prisma файл в prisma папку и добавьте следующее User модель в базу данных:
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String
name String
}Затем добавьте следующие вспомогательные скрипты в scripts раздел вашего package.json:
"scripts": {
"migrate": "dotenv -e .dev.vars -- npx prisma migrate dev",
"generate": "dotenv -e .dev.vars -- npx prisma generate --no-engine",
"studio": "dotenv -e .dev.vars -- npx prisma studio",
// Additional worker scripts...
}Выполните скрипт миграции, чтобы применить изменения к базе данных:
npm run migrateКогда появится запрос, укажите имя миграции (например, init).
После выполнения этих шагов Prisma ORM полностью настроен и подключён к вашей базе данных Prisma Postgres.
3. Разработка приложения
Измените src/index.ts файл и замените его содержимое следующим кодом:
import { PrismaClient } from "@prisma/client/edge";
import { withAccelerate } from "@prisma/extension-accelerate";
export interface Env {
DATABASE_URL: string;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
const path = new URL(request.url).pathname;
if (path === "/favicon.ico")
return new Response("Resource not found", {
status: 404,
headers: {
"Content-Type": "text/plain",
},
});
const prisma = new PrismaClient({
datasourceUrl: env.DATABASE_URL,
}).$extends(withAccelerate());
const user = await prisma.user.create({
data: {
email: `Jon${Math.ceil(Math.random() * 1000)}@gmail.com`,
name: "Jon Doe",
},
});
const userCount = await prisma.user.count();
return new Response(`\
Created new user: ${user.name} (${user.email}).
Number of users in the database: ${userCount}.
`);
},
} satisfies ExportedHandler<Env>;Запустите сервер разработки:
npm run devПерейдите на https://localhost:8787 ↗ чтобы увидеть, что ваше приложение выводит следующее:
Number of users in the database: 1Каждый раз при обновлении страницы создаётся новый пользователь. Отображаемое число увеличивается на 1 при каждом обновлении, так как он возвращает общее количество пользователей в вашей базе данных.
4. Разверните приложение в Cloudflare
Когда приложение развёрнуто в Cloudflare, ему требуется доступ к DATABASE_URL переменную окружения, определённую локально в .dev.vars. Можно использовать npx wrangler secret put команду, чтобы загрузить DATABASE_URL для среды развертывания:
npx wrangler secret put DATABASE_URLКогда появится запрос, вставьте DATABASE_URL значение (из .dev.vars). Если вы вошли в систему через Wrangler CLI, появится запрос с предложением создать новый Worker. Подтвердите, выбрав "yes":
✔ There doesn't seem to be a Worker called "prisma-postgres-worker". Do you want to create a new Worker with that name and add secrets to it? … yesЗатем выполните следующую команду, чтобы развернуть проект в Cloudflare Workers:
npm run deploy wrangler CLI соберет и загрузит ваше приложение.
Если вы ещё не выполнили вход, wrangler CLI откроет окно браузера с предложением войти в Cloudflare dashboard.
После завершения развертывания проверьте его, перейдя по действующему URL-адресу, указанному в выводе развертывания, например https://{PROJECT_NAME}.workers.dev. Если возникли проблемы, убедитесь, что секреты добавлены правильно, и проверьте журналы развёртывания на наличие ошибок.
Следующие шаги
Поздравляем с созданием и развёртыванием простого приложения с Prisma Postgres и Cloudflare Workers!
Чтобы улучшить приложение ещё больше:
- Добавить кэширование ↗ к вашим запросам.
- Изучите Документация Prisma Postgres ↗.
О том, как создать приложение реального времени с Cloudflare Workers и Prisma Postgres, читайте это ↗ руководство.