Создание базы данных фильмов с помощью Prisma, Express и MongoDB: руководство для начинающих
Добро пожаловать в мир веб-разработки, где базы данных являются основой динамических приложений. Если вы только начинаете свой путь и ищете мощное, но удобное для новичков решение, Prisma может стать вашим путем к упрощенному взаимодействию с базами данных. В этом руководстве мы рассмотрим процесс создания базы данных фильмов с использованием Prisma, Express и MongoDB, предлагая практический подход для новичков.
Призма: краткий обзор
Prisma — это набор инструментов для работы с базами данных с открытым исходным кодом, который действует как мост между кодом вашего приложения и базой данных. Он поддерживает различные базы данных, такие как MySQL, PostgreSQL, SQLite, MongoDB и другие. Ключевой особенностью Prisma является ее типобезопасный и автоматически генерируемый построитель запросов, позволяющий разработчикам взаимодействовать с базами данных, используя предпочитаемый ими язык программирования.
Настройка вашего проекта
Давайте углубимся в практические аспекты. Откройте терминал и выполните следующие действия:
# Create a project directory
mkdir movie-database-prisma-express-mongodb
# Navigate into the project directory
cd movie-database-prisma-express-mongodb
# Initialize a JavaScript project
npm init -y
# Install necessary dependencies
npm install express @prisma/client dotenv
Эти команды устанавливают базовую структуру проекта, Express для создания веб-сервера, Prisma для взаимодействия с базой данных и dotenv для управления переменными среды.
Настройка Prisma для MongoDB
Теперь давайте настроим Prisma для работы с MongoDB. Выполните следующие команды в своем терминале:
# Initialize Prisma
npx prisma init
При этом будет создан каталог prisma
с необходимыми файлами для установки Prisma. Откройте prisma/schema.prisma
и настройте блок источника данных для подключения к вашей MongoDB:
// prisma/schema.prisma
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
Не забудьте создать .env
файл в корне вашего проекта и добавить URL-адрес подключения MongoDB:
DATABASE_URL="your-mongodb-connection-url"
Замените "your-mongodb-connection-url"
фактической строкой подключения MongoDB.
Создание сервера Express
Теперь давайте рассмотрим настройку сервера Express server.js
:
import "dotenv/config";
import express from "express";
import routes from "./routes/index.js";
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(routes);
app.get("/", (req, res) => {
res.send("Working");
});
app.listen(PORT, () => {
console.log(`Server is running on PORT ${PORT}`);
});
Этот сценарий настраивает базовый сервер Express, обрабатывающий данные в формате JSON и URL. Он также определяет простой /
маршрут, который возвращает «Рабочее» сообщение.
Определение маршрутов и контроллеров
Маршруты определяются в каталоге routes
и делятся на movieRoutes.js
и castRoutes.js
. Эти маршруты затем импортируются в index.js
для создания модульной структуры.
Контроллеры в controllers/MovieController.js
и controllers/CastController.js
управляют логикой хранения, извлечения, обновления и удаления фильмов и трансляций.
Модель данных Prisma
Сердце Prisma лежит в ее модели данных, определенной в prisma/schema.prisma
. Это структурированное представление схемы вашей базы данных используется для автоматического создания клиента Prisma.
model Movie {
id String @id @default(auto()) @map("_id") @db.ObjectId
name String @unique
created_at DateTime @default(now())
Cast Cast[]
}
model Cast {
id String @id @default(auto()) @map("_id") @db.ObjectId
movieId String @db.ObjectId
movie Movie @relation(fields: [movieId], references: [id])
name String
description String?
created_at DateTime @default(now())
}
Этот фрагмент определяет две модели: Movie
и Cast
. Модель Movie
представляет фильмы, а Cast
модель представляет актерский состав, связанный с каждым фильмом. Отношения между моделями четко определены.
Конфигурация клиента Prisma
В DB/db.config.js
клиенте Prisma настраивается и экспортируется:
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient({
log: ["query"],
});
export default prisma;
Использование Prisma в контроллерах
Контроллеры используют клиент Prisma для операций с базой данных. Например, CastController.js
извлекает все Casts
и сохраняет новые:
import prisma from "../DB/db.config.js";
export const getAllCast = async (req, res) => {
// Retrieve all casts with associated movie details
const casts = await prisma.cast.findMany({
include: {
movie: {
select: {
name: true,
id: true,
},
},
},
});
return res.json({ status: 200, casts });
};
export const store = async (req, res) => {
// Store a new cast
const { movie_id, name } = req.body;
const cast = await prisma.cast.create({
data: {
movieId: movie_id,
name: name,
},
});
return res.json({ status: 200, cast, message: "Cast Added successfully!" });
};
Заключение
Поздравляем! Вы успешно настроили базу данных фильмов с помощью Prisma, Express и MongoDB. Это руководство представляет собой основу для создания более сложных приложений и изучения возможностей Prisma в процессе веб-разработки. Продолжая исследование, не забудьте скрыть в .env
файле конфиденциальную информацию, например учетные данные MongoDB. Приятного кодирования!