๋ชฉ๋ก์ ์ฒด ๊ธ (1005)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
=> Node.js With Passport Authentication | Full Project => authentication app with login, register and access control using Node.js, Express, Passport, Mongoose ๋ฐ๋ผํ๋ค๊ฐ bootstrap ์ ์ ์ฉ๋ผ์ ์ ๋ถ์ ๊นํ๋ธ ์ฐธ๊ณ ํจ.. ๐ฅ ๋ก๊ทธ์ธ & ํ์๊ฐ์ ํ์ด์ง ์์๊ฒ ๋ณ๊ฒฝํ๊ธฐ ๐ง app.js const express = require("express"); const expressLayouts = require("express-ejs-layouts"); const app = express(); // ejs ๋ฏธ๋ค์จ์ด app.use(expressLayouts); // express ์ vi..
=> Node.js With Passport Authentication | Full Project => authentication app with login, register and access control using Node.js, Express, Passport, Mongoose ๐ฅ ejs (Embedded JavaScript) : JavaScript๋ก HTML ๋งํฌ ์ ์ ์์ฑ ํ ์์๋ ๊ฐ๋จํ ํ ํ๋ฆฟ ์ธ์ด ( view๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ํ ํ๋ฆฟ ์ธ์ด ) ์ฐธ๊ณ => https://noodler.tistory.com/26 ํ๋ฆ ์ ์ด๋ฌธ ๋ณ์ ๊ฐ ์์ฝ์ด ๋ค๋ฅธ viewํ์ผ์ ๋ถ๋ฌ ์ด ๐ฅ ejs ์ฐธ๊ณ ์ฌ์ดํธ (bootstrap.min.css) https://bootswatch.com/ Bootswatch: ..
๐ฉ๐ป SQL (Structed Query Language) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ์กฐ์ํ๊ธฐ ์ฌ์ด ํ์ค ์ธ์ด โญ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์ฌ๋ฌ ์ฌ๋์ด ๊ณต์ ํด ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ํตํฉํ์ฌ ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ์ ๋ชจ์ ๐ฉ๐ป ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ํ๋ ์ด์์ ํ ์ด๋ธ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ์๋ก ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ ๊ฐ์ง (SQL๋ก ์ ์ด) โญ ํ ์ด๋ธ : ์ปฌ๋ผ๊ณผ ๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋ ํ : ๋ชจ๋ ํ ์ด๋ธ์ ๊ณ ์ ์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถ // ๋ฐ์ดํฐ ๊ฒ์ SELECT ๊ฒ์ํ ์นผ๋ผ FROM ํ ์ด๋ธ; - DISTINCT : ๋๋ ทํ, ๋ถ๋ช ํ ๋ค์ ๋์ค๋ ์ปฌ๋ผ์ ์ค๋ณต ์ ๊ฑฐํจ - WHERE : ๊ฒ์ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ์ค์ SELCT ๊ฒ์ํ ์ปฌ๋ผ FROM ํ ์ด๋ธ WHERE ์กฐ๊ฑด; - LIKE : ํน์ ๋ฌธ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ์ฐพ๊ณ ์ถ์ ๋ ์ฌ์ฉ (๋์๋ฌธ์๋ฅผ ์ฐ์ ..
=> Node.js With Passport Authentication | Full Project => authentication app with login, register and access control using Node.js, Express, Passport, Mongoose ๐ฅ ํ๊ฒฝ ์ธํ : npm ์ ํตํด ์๋์ ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ ๐ฅ ์๋ฒ ๋์ฐ๊ธฐ ๐ง app.js const express = require("express"); const app = express(); // Routes app.use("/", require("./routes/index")); app.use("/users", require("./routes/user")); const PORT = process.env.PORT ||..
=> CRUD App With Image Upload Using NodeJs, ExpressJs, MongoDB & EJS Templating Engine ๐ฅ user์ ํ๋กํ ๋ชฉ๋ก์ ์์ฑํ๊ณ ์์ ํ๊ณ ์ญ์ ํ๊ณ MongoDB์ ์ ์ฅํ๊ธฐ ์ฐธ๊ณ : https://github.com/gani0325/2023/tree/main/Web/ImageUpload ๐ง models/user.js const mongoose = require("mongoose"); const userSchema = new mongoose.Schema({ name: { type: String, required: true, }, email: { type: String, required: true, }, phone: { type: String, ..
=> CRUD App With Image Upload Using NodeJs, ExpressJs, MongoDB & EJS Templating Engine ๐ฅ user ๋ฐ์ดํฐ ์ญ์ ํ๊ธฐ ๐ง routes/routes.js const express = require("express"); const router = express.Router(); const User = require("../models/user"); const multer = require("multer"); const fs = require("fs"); const { resourceLimits } = require("worker_threads"); // image upload var storage = multer.diskStorage({ //..
=> CRUD App With Image Upload Using NodeJs, ExpressJs, MongoDB & EJS Templating Engine ๐ฅ ๋๊ธฐ(synchronous) : ์ง๋ ฌ์ ์ผ๋ก ํ์คํฌ๋ฅผ ์ํ : ์์ฒญ์ ๋ณด๋ธ ํ ์๋ต์ ๋ฐ์์ผ์ง๋ง ๋ค์ ๋์์ด ์ด๋ฃจ์ด์ง๋ ๋ฐฉ์ (ํ์คํฌ๋ฅผ ์ฒ๋ฆฌํ ๋์ ๋๋จธ์ง ํ์คํฌ๋ ๋๊ธฐ) ๐ฅ ๋น๋๊ธฐ (asynchronous) : ๋ณ๋ ฌ์ ์ผ๋ก ํ์คํฌ๋ฅผ ์ํ : ์์ฒญ์ ๋ณด๋ธ ํ ์๋ต์ ์๋ฝ ์ฌ๋ถ์๋ ์๊ด์์ด ๋ค์ ํ์คํฌ๊ฐ ๋์ํ๋ ๋ฐฉ์ (a ํ์คํฌ๊ฐ ์คํ๋๋ ์๊ฐ ๋์ b ํ์คํฌ ํจ) : ๋น๋๊ธฐ ์์ฒญ์ ์๋ต ํ ์ฒ๋ฆฌํ '์ฝ๋ฐฑ ํจ์' ์๋ ค์ค => ํด๋น ํ์คํฌ๊ฐ ์๋ฃ๋์์ ๋, '์ฝ๋ฐฑ ํจ์'๊ฐ ํธ์ถ๋จ โ ํ์ ์ฒ๋ฆฌ ๋ฉ์๋ 1) Promise then (Promise ๋ฐํ) ..
=> CRUD App With Image Upload Using NodeJs, ExpressJs, MongoDB & EJS Templating Engine ๐ฅ datatables https://datatables.net/download/ : ๊ฒ์๊ธฐ๋ฅ, ์ด๊ฑด์, ํ์ด์ง๋น๊ฑด์, ์ด์ /๋ค์ ํ์ด์ง ์ด๋, ์ปฌ๋ผ๋ณ ์ ๋ ฌ, ํ๋ ํฌ๋งท, ์ผ์ชฝ/๊ฐ์ด๋ฐ/์ค๋ฅธ์ชฝ ์ ๋ ฌ ๋ฑ์ ์ ๊ณต ๐ฅ CDN https://cdnjs.com/ : Content Delivery Nerwork์ ์ฝ์ : ์น์ฌ์ดํธ์ ์ ์์๊ฐ ์ฝํ ์ธ ๋ฅผ ๋ค์ด๋ก๋ํ ๋ ์๋์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ์์ ๋ค์ด๋ก๋ํ ์ ์๋๋ก ํ๋ ๊ธฐ์ ๐ฅ MongoDB์ user Data ๋ฃ์ด์ง๊ณ , html์ ๋ฑ๋ก๋๋ ๊ณผ์ ๐ง views/index.ejs ID Image Name E-mai..