NodeJs-ExpressJs-MongoDB용 백엔드 상용구

백엔드 웹 개발을 배울 때. 백엔드 웹 개발에 적합한 리소스를 찾지 못했습니다. 하지만 최선을 다해 배우려고 노력했습니다. 인터넷 검색을 시작하고 YouTube 및 설명서 웹 사이트를 사용하여 배웠습니다.
그런 다음 동일한 파일 app.js 또는 index.js에서 작업했습니다.
나중에 큰 프로젝트를 작업하는 것이 매우 어려웠습니다.
시작하기 전에 파일 구조가 중요한 이유는 무엇입니까?
1) 향후 파일을 빠르게 찾을 수 있도록 도와줍니다.
2) 다른 개발자가 귀하의 파일을 이해할 수 있고 큰 어려움에 직면하지 않습니다.
3) 디버깅 용이
4) 더 중요한 것은 깨끗한 코드입니다. 작성한 내용으로 작업하는 다음 사람과 명확하게 통신할 수 있기 때문입니다.

파일 구조




구성



→ 이 디렉토리에서 우리는 일반적으로 mongoose를 사용하여 MongoDB와 같은 데이터베이스를 연결합니다.
→ 또한 여권 관리를 위한 Node.js용 Express 호환 인증 미들웨어입니다. Passport의 유일한 목적은 요청을 인증하는 것이며 전략으로 알려진 확장 가능한 플러그인 세트를 통해 이루어지며 이 디렉토리는 주로 구성 부분을 처리하는 데 사용됩니다.

→ db.js 구조



import mongoose from "mongoose";
import dotenv from "dotenv";
dotenv.config();
const MONGO_URL = process.env.MONGO_URL || "mongodb://localhost:27017/test"

// console.log(MONGO_URL)

// Connect Database
export const connectDB = mongoose.connect(MONGO_URL,{
useNewUrlParser:true,
useUnifiedTopology:true
})
.then(console.log("DB Connected Succesfully...."))
.catch((err)=>{
console.log("DB Connection Failed!")
console.log(err)
process.exit(1)
});

export default connectDB;


모델



여기에서 각 문서에 컬렉션을 생성하기 위해 스키마를 구현합니다.

→ user.js의 구조



// Import Dependencies
import mongoose  from "mongoose";
import validator from "validator";
import bcrypt from "bcryptjs";
import jwt from "jsonwebtoken";

const userSchema=new mongoose.Schema({

username:{type:String,required:true,maxlength:[40,'Name should be under 40 characters.']},

email:{type:String,required:[true,'Please provide an email'],validate:[validator.isEmail,'Please enter email in correct format'],unique:true},

password:{type:String,required:true,minlength:[6,"Password should be of atleast 6 characters."],
},

role:{type: [{type: String,enum: ['admin', 'user']}],default:['user']},
forgotPasswordToken:String,
forgotPasswordExpiry:Date
},
{timestamps:true})

const User = mongoose.model("User",userSchema);
export default User;

컨트롤러



컨트롤러는 모델에서 요청된 데이터를 가져오고, 데이터를 표시하는 HTML 페이지를 만들고, 브라우저에서 볼 수 있도록 사용자에게 반환하는 기능을 합니다.

→ userController.js의 구조



// Import Model
import User from "../models/User.js"

// Making Promise
import bigPromise from "../middlewares/bigPromise.js"

export const createUser = bigPromise(async(req,res,next)=>{
const {username,email,password}=req.body;

if((!username) || (!email) || (!password)){
return res.status(400).json({
success:false,
message:"All fields are required!"
})}

const existingUser = await User.findOne({email:email})

if(existingUser){
return res.status(501).json({
success:true,
message:"User Already Exists !",
})}

else{
const user=await User.create({
username,
email,
password
})

return res.status(201).json({
success:true,
message:"User Created Successfully !",
data:user
})
}
})


미들웨어



미들웨어의 주요 목적은 req 및 res 개체를 수정한 다음 필요한 모든 코드를 컴파일 및 실행하는 것입니다. 또한 요청-응답 세션을 종료하고 스택의 다음 미들웨어를 호출하는 데 도움이 됩니다.

myCustomMiddleware (req,res,next)
{
// My Customized Middleware is here.
}

경로



지원되는 요청(및 요청 URL에 인코딩된 모든 정보)을 적절한 컨트롤러 기능으로 전달하는 "경로".

→ userRoutes.js의 구조



import express from "express"
const router = express.Router()

// import controllers
import {createUser} from "../controllers/userController.js"

router.route("/createUser").post(createUser)
export default router;


유틸리티



"Utils"에는 api 등을 기반으로 오류를 처리하는 기능을 넣습니다. 또한 "utils"모듈은 형식이 지정된 문자열을 인쇄하는 기능과 디버깅 목적에 유용한 일부 '유틸리티' 기능을 제공합니다. 이러한 기능에 액세스하려면 require('utils')를 사용하십시오.

.env



.env 파일에는/etc/environment 파일에 설정된 변수를 재정의하는 개별 사용자 환경 변수가 포함되어 있습니다. 을 수정하여 원하는 대로 환경 변수를 맞춤설정할 수 있습니다. env 파일.

예시 :



#JWT
APP_PORT=9000

#PREFIX app path
APP_PRIFIX_PATH=/APP_PRIFIX_PATH

#JWT
JWT_SECRET=APLHABETAGAMA
JWT_EXPIRE=1y

# Database config

# If you want to use database URI with DB_URI
DB_URI=
DB_USERNAME=admin
DB_PASSWORD=admin

→ app.js의 구조



여기서는 일반 미들웨어, 쿠키 파서, 경로 관리 및 라우터 미들웨어와 같은 주요 종속성을 가져옵니다.

import express  from "express"
import  dotenv  from "dotenv"
import connectDB from "./config/db.js"
dotenv.config();
const app=express()
import cookieParser from "cookie-parser"

//cookies and filemiddleware
app.use(cookieParser())

// morgan middlewares
import morgan from "morgan"
app.use(morgan("tiny"))

// regular middlewares
app.use(express.json())
app.use(express.urlencoded({extended:true}))

// import all routes here
import userRoutes from "./routes/userRoutes.js"

// router middleware
app.use("/api/v1",userRoutes);
export default app;

→ index.js의 구조



여기에서 우리는 localhost에서 서버를 듣거나 실행합니다.

import app from "./app.js"
const PORT=process.env.PORT||1999

// import {connectDB} from "./config/db.js"

app.listen(PORT,()=>{
console.log(`listening at port http://localhost:${PORT}`)
})



워크플로우




새 프로젝트를 설정하는 동안 설치할 기본 npm 패키지:

npm i express mongoose doting body-parser morgan cors jsonwebtoken bcryptjs validator cookie-parser


끝나기 전에 내 node-js-backend-boilerplate를 원하신다면 이미 생성되어 있고 Catalysts Organisation에서 오픈 소스로 제공됩니다.
보일러플레이트에 대한 이 GitHub 링크를 확인하세요. 프로젝트에 대한 이 상용구를 복제할 수 있습니다: Click Here
이 글이 도움이 되셨다면 팔로우하세요. 감사합니다 !

좋은 웹페이지 즐겨찾기