Lesson 17 / 30
Database Integration
Connect and query databases from Fastify routes.
Database as a plugin
Initialize the database connection in a plugin and decorate the Fastify instance for use in routes.
Database plugin example
A plugin that sets up a Prisma client and makes it available in routes.
import { PrismaClient } from '@prisma/client';
export default async function dbPlugin(fastify, opts) {
const prisma = new PrismaClient();
fastify.addHook('onClose', async () => {
await prisma.$disconnect();
});
fastify.decorate('db', prisma);
}
// In a route:
fastify.get('/users', async () => {
return await fastify.db.user.findMany();
});Handle connection gracefully
Use the onClose hook to disconnect the database when Fastify shuts down.