Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions backend/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
MONGO_URI=mongodb+srv://root:root@book-store-mern.qar8fzj.mongodb.net/?appName=Book-Store-MERN
50 changes: 50 additions & 0 deletions backend/api/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import express from 'express';
import mongoose from 'mongoose';
import cors from 'cors';
import booksRoute from '../routes/booksRoute.js';

// On Vercel, set MONGO_URI in Project Settings -> Environment Variables.
// Locally (via `vercel dev`), it will read from backend/.env if you use
// something like `vercel env pull` or `dotenv` — see README notes below.
const mongoDBURL = process.env.MONGO_URI;

const app = express();

app.use(express.json());
app.use(cors());

app.get('/', (request, response) => {
return response.status(200).send('Welcome To MERN Stack Tutorial (Vercel)');
});

app.use('/books', booksRoute);

// Serverless functions can be invoked concurrently and are reused between
// invocations while "warm", so we cache the DB connection instead of
// reconnecting on every request.
let isConnected = false;

async function connectDB() {
if (isConnected && mongoose.connection.readyState === 1) return;

if (!mongoDBURL) {
throw new Error(
'MONGO_URI environment variable is not set. Add it in Vercel Project Settings.'
);
}

await mongoose.connect(mongoDBURL);
isConnected = true;
console.log('App connected to database');
}

// Vercel's Node runtime calls this exported function as the request handler.
export default async function handler(request, response) {
try {
await connectDB();
return app(request, response);
} catch (error) {
console.error(error);
return response.status(500).json({ message: 'Database connection failed' });
}
}
2 changes: 1 addition & 1 deletion backend/config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export const PORT = 5555;

export const mongoDBURL =
'mongodb+srv://root:root@books-store-mern.c7ba8z1.mongodb.net/books-collection?retryWrites=true&w=majority';
'mongodb+srv://root:root@book-store-mern.qar8fzj.mongodb.net/?retryWrites=true&w=majority&appName=Book-Store-MERN';

// Please create a free database for yourself.
// This database will be deleted after tutorial
8 changes: 6 additions & 2 deletions backend/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import dns from 'dns';
dns.setServers(['1.1.1.1', '8.8.8.8']);

import express from 'express';
import { PORT, mongoDBURL } from './config.js';
import mongoose from 'mongoose';
Expand Down Expand Up @@ -27,7 +30,7 @@ app.get('/', (request, response) => {
});

app.use('/books', booksRoute);

console.log(mongoDBURL);
mongoose
.connect(mongoDBURL)
.then(() => {
Expand All @@ -37,5 +40,6 @@ mongoose
});
})
.catch((error) => {
console.log(error);
console.error(error);
console.error(error.message);
});
2 changes: 1 addition & 1 deletion backend/models/bookModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const bookSchema = mongoose.Schema(
type: String,
required: true,
},
publishYear: {
publishedYear: {
type: Number,
required: true,
},
Expand Down
Loading