"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Application de blog JS suivante

Application de blog JS suivante

Publié le 2024-11-08
Parcourir:216

Next JS Blog App

Pour créer une application de blog à l'aide de Next.js avec à la fois backend et frontend, où les utilisateurs peuvent ajouter et supprimer des blogs et stocker les données dans une base de données, procédez comme suit :

1. Configurer le projet Next.js

Tout d'abord, créez un nouveau projet Next.js si vous ne l'avez pas déjà fait :

npx create-next-app@latest blog-app
cd blog-app
npm install

2. Configurer la base de données

Pour ce projet, utilisons MongoDB via Mongoose comme base de données.

  • Installer Mongoose :
npm install mongoose
  • Créez une base de données MongoDB à l'aide de services tels que MongoDB Atlas ou utilisez une configuration MongoDB locale.

  • Connectez-vous à MongoDB en créant un fichier lib/mongodb.js :

// lib/mongodb.js
import mongoose from 'mongoose';

const MONGODB_URI = process.env.MONGODB_URI;

if (!MONGODB_URI) {
  throw new Error('Please define the MONGODB_URI environment variable');
}

let cached = global.mongoose;

if (!cached) {
  cached = global.mongoose = { conn: null, promise: null };
}

async function dbConnect() {
  if (cached.conn) {
    return cached.conn;
  }

  if (!cached.promise) {
    cached.promise = mongoose.connect(MONGODB_URI).then((mongoose) => {
      return mongoose;
    });
  }
  cached.conn = await cached.promise;
  return cached.conn;
}

export default dbConnect;

Ajoutez le MONGODB_URI à votre fichier .env.local :

MONGODB_URI=mongodb srv://:@cluster0.mongodb.net/blog-app?retryWrites=true&w=majority

3. Définir le schéma du blog

Créer un modèle pour les blogs dans models/Blog.js :

// models/Blog.js
import mongoose from 'mongoose';

const BlogSchema = new mongoose.Schema({
  title: {
    type: String,
    required: true,
  },
  content: {
    type: String,
    required: true,
  },
}, { timestamps: true });

export default mongoose.models.Blog || mongoose.model('Blog', BlogSchema);

4. Créer des routes API pour le blog

Dans Next.js, vous pouvez créer des routes API dans le répertoire pages/api.

  • Créez des pages/api/blog/index.js pour gérer les requêtes GET et POST (ajout de blogs) :
// pages/api/blog/index.js
import dbConnect from '../../../lib/mongodb';
import Blog from '../../../models/Blog';

export default async function handler(req, res) {
  const { method } = req;

  await dbConnect();

  switch (method) {
    case 'GET':
      try {
        const blogs = await Blog.find({});
        res.status(200).json({ success: true, data: blogs });
      } catch (error) {
        res.status(400).json({ success: false });
      }
      break;
    case 'POST':
      try {
        const blog = await Blog.create(req.body);
        res.status(201).json({ success: true, data: blog });
      } catch (error) {
        res.status(400).json({ success: false });
      }
      break;
    default:
      res.status(400).json({ success: false });
      break;
  }
}
  • Créez des pages/api/blog/[id].js pour gérer les requêtes DELETE :
// pages/api/blog/[id].js
import dbConnect from '../../../lib/mongodb';
import Blog from '../../../models/Blog';

export default async function handler(req, res) {
  const { method } = req;
  const { id } = req.query;

  await dbConnect();

  switch (method) {
    case 'DELETE':
      try {
        const blog = await Blog.findByIdAndDelete(id);
        if (!blog) {
          return res.status(400).json({ success: false });
        }
        res.status(200).json({ success: true, data: {} });
      } catch (error) {
        res.status(400).json({ success: false });
      }
      break;
    default:
      res.status(400).json({ success: false });
      break;
  }
}

5. Créer une interface pour ajouter et afficher des blogs

  • Créez une page pages/index.js pour lister tous les blogs et un formulaire pour ajouter de nouveaux blogs :
// pages/index.js
import { useState, useEffect } from 'react';
import axios from 'axios';

export default function Home() {
  const [blogs, setBlogs] = useState([]);
  const [title, setTitle] = useState('');
  const [content, setContent] = useState('');

  useEffect(() => {
    async function fetchBlogs() {
      const response = await axios.get('/api/blog');
      setBlogs(response.data.data);
    }
    fetchBlogs();
  }, []);

  const addBlog = async () => {
    const response = await axios.post('/api/blog', { title, content });
    setBlogs([...blogs, response.data.data]);
    setTitle('');
    setContent('');
  };

  const deleteBlog = async (id) => {
    await axios.delete(`/api/blog/${id}`);
    setBlogs(blogs.filter(blog => blog._id !== id));
  };

  return (
    

Blog App

{ e.preventDefault(); addBlog(); }}> setTitle(e.target.value)} placeholder="Blog Title" />

Blogs

    {blogs.map(blog => (
  • {blog.title}

    {blog.content}

  • ))}
); }

6. Démarrez le serveur

Exécutez votre application :

npm run dev

7. Test de l'application

  • Vous pouvez désormais ajouter et supprimer des blogs, et toutes les données seront stockées dans votre base de données MongoDB.

Faites-moi savoir si vous avez besoin de plus de détails !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/iamyathz/next-js-blog-app-4e1f?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3