To create an example API in Node.js with MongoDB using Prisma ORM, you'll first need to set up a Node.js project and configure Prisma to use MongoDB. Below is a step-by-step guide to create a basic API.
Step 1: Set Up Your Project
- Initialize a Node.js Project:
mkdir prisma-mongodb-example
cd prisma-mongodb-example
npm init -y
-
Install Required Packages:
Install
express
for building the API,prisma
for ORM, and@prisma/client
for Prisma Client.
npm install express prisma @prisma/client
- Install Prisma CLI:
npx prisma init
Step 2: Configure Prisma for MongoDB
-
Configure
.env
File: Update the.env
file generated by Prisma to include your MongoDB connection string. For example:
DATABASE_URL="mongodb://localhost:27017/mydatabase"
-
Set Prisma Schema to Use MongoDB:
Update the
prisma/schema.prisma
file to use MongoDB as the provider and define a model. Here is an example schema:
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(auto()) @map("_id") @db.ObjectId
name String
email String @unique
}
Step 3: Generate Prisma Client
Run the following command to generate the Prisma Client based on the schema:
npx prisma generate
Step 4: Create a Basic Express API
-
Create an
index.js
File: This file will initialize the Express application and define the API routes.
const express = require('express');
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
const app = express();
app.use(express.json());
// Create a new user
app.post('/users', async (req, res) => {
const { name, email } = req.body;
try {
const user = await prisma.user.create({
data: { name, email },
});
res.json(user);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// Get all users
app.get('/users', async (req, res) => {
const users = await prisma.user.findMany();
res.json(users);
});
// Get a single user by ID
app.get('/users/:id', async (req, res) => {
const { id } = req.params;
try {
const user = await prisma.user.findUnique({
where: { id },
});
if (user) {
res.json(user);
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Update a user by ID
app.put('/users/:id', async (req, res) => {
const { id } = req.params;
const { name, email } = req.body;
try {
const user = await prisma.user.update({
where: { id },
data: { name, email },
});
res.json(user);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// Delete a user by ID
app.delete('/users/:id', async (req, res) => {
const { id } = req.params;
try {
await prisma.user.delete({
where: { id },
});
res.json({ message: 'User deleted successfully' });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
Step 5: Run the Application
- Run the Application:
node index.js
-
Test the Endpoints:
Use tools like Postman or cURL to test the CRUD operations for the
User
model.
Conclusion
This example demonstrates how to create a basic CRUD API in Node.js with MongoDB using Prisma ORM. You can expand this example by adding more models, relationships, and validation logic as needed for your application.
Top comments (0)