1. 정리app.use( session({ secret: "Hello!", resave: true, saveUninitialized: true, })); - 해당 middleware는 express-session이라는 module에서 왔으며, 브라우저가 백엔드와 상호작용 할 때 마다 브라우저에 cookie를 전송 - cookie는 백엔드에서 브라우저에게 주는 정보인데 정해진 규칙이 있음 - 매번 백엔드에 request 할 때 마다 브라우저는 자동적으로 request에 cookie를 덧붙임 - 브라우저는 매번 백엔드의 localhost에 있는 URL로 request를 보낼 때 마다 cookie가 request와 함께 전송된다는 것을 알고 있음 - cookie에는 아무 정보나 넣을 수 있..
1. 사용할 패키지들 node.js는 기존에 브라우저 안에서만 사용되던 언어였지만 브라우저 밖에서도 사용하기 위해 만들어졌으며, 프론트엔드와 백엔드에서 동시에 사용할 수 있다는 장점이 있다. node.js에는 npm을 통해 패키지를 관리한다. npm init을 사용하여 프로젝트를 생성하고 나면 package.json이 생성된다. json은 데이터를 전송할 때 사용하는 양식이며 package.json에는 해당 프로젝트의 패키지를 관리하기 위한 문서다. 우리가 npm을 사용하여 설치한 모든 것들은 package.json의 dependencies에 기록된다. dependencies는 프로젝트를 실행하기 위한, devDependencies는 개발자를 위한 패키지들이다. express라는 node.js의 프레임워..
1. Cookie Session (1) - 이전까지는 account가 존재하는지, account의 password가 맞는지만 확인하였음 - 이제는 서버가 로그인을 시도한 유저를 기억하는 방법을 알아야 함 - 그 방법 중 하나가 cookie이며, cookie를 이해하기 전 먼저 session에 대해 알아야 함 - session이란, 백엔드와 브라우저 간에 어떤 활동(history)을 했는지 기억(memory)하는걸 말함 - 백엔드와 브라우저간 정보가 있어야 됨 - 현재 home으로 이동하면 GET request가 발생하는데, 백엔드에서 HTML을 render하고 나면 연결이 끝남 - 즉 연결이 지속되지 않는 무상태(stateless) - request를 받고 처리되면 서버도 브라우저도 곧바로 ..
1. Login// userController.jsexport const postJoin = async (req, res) => { const { email, username, password1, password2, name, location } = req.body; if (password1 !== password2) { return res.status(400).render("join", { pageTitle: "Join", errorMessage: "Password confirmation does not match.", }); } const exists = await User.exists({ $or: [{ username }, { email }] }); if (ex..
1. Status Code - 우리가 회원가입을 하고 나면 보통은 브라우저가 아이디와 비밀번호를 저장할건지를 묻는 창이 뜸 - 하지만 회원가입이 정상적으로 완료되었는가를 브라우저가 확인했는지 여부는 여전히 우리가 알 수 없음 - 우리의 회원가입 화면에서는 중복되는 email이나 username이 있으면 여전히 에러메세지가 출력되기 때문 - https://en.wikipedia.org/wiki/List_of_HTTP_status_codes List of HTTP status codes - WikipediaFrom Wikipedia, the free encyclopedia This is a list of Hypertext Transfer Protocol (HTTP) response status codes..
1. Hash - 해킹과 같은 위험에 대비하게 위해 암호를 hash 할거임 - hash는 일방향 함수이며 문자열이 필요 - https://www.npmjs.com/package/bcrypt - 우리는 DB에 암호를 그냥 저장하지 않고, 해싱된 암호를 저장 bcryptA bcrypt library for NodeJS.. Latest version: 5.1.1, last published: a year ago. Start using bcrypt in your project by running `npm i bcrypt`. There are 7172 other projects in the npm registry using bcrypt.www.npmjs.com - 해커가 해싱된 암호를 가지고 공격을 하는걸 rai..
1. 유저 CRUD - 지금까지 video를 CRUD 하면서 배운 것들에 Authentication까지 추가 할 거임 - 유저가 로그인하는 것까지 구현하면서 로그인이 어떤 의미인지를 알아볼 예정 - 그리고 로그인한 유저를 어떻게 기억할지 구현 - 유저 생성에 관한 것들을 배우면서 깃허브에 로그인 하는 것 까지 구현 - 요약하면 ID는 이메일로, 거기에 비밀번호를 추가하고, 깃허브로 소셜 로그인 2. Schema 구성 - Video Model을 만들때와 똑같은 순서 - userSchema를 만들어 MongoDB와 mongoose에 User가 어떻게 생겼는지 알려줌 - static을 만들고 모델을 export 할 예정 - 그리고 이제 globalRouter 대신 rootRouter로 이름을 바꿀 예정// U..
1. More Schema - https://mongoosejs.com/docs/schematypes.html Mongoose v8.8.0: SchemaTypesSchemaTypes handle definition of path defaults, validation, getters, setters, field selection defaults for queries, and other general characteristics for Mongoose document properties. You can think of a Mongoose schema as the configuration object for a Monmongoosejs.com// upload.pugextends baseblock content..

1. Document 만들기 - schema는 video의 구성요소와 데이터 형태를 갖추고 있음 - 유저가 비디오를 업로드할 때 해당 schema의 데이터들을 전송 - 생성일이나 meta 데이터는 자동으로 생성 - 비디오를 생성하려면 document가 필요함 // upload.pugextends baseblock content form(method="POST") input(placeholder="Title", required, type="text", name="title") input(placeholder="Description", required, type="text", name="description") input(placeholder="Hashtags,..

1. Mongoose - https://mongoosejs.com/ Mongoose ODM v8.8.0Let's face it, writing MongoDB validation, casting and business logic boilerplate is a drag. That's why we wrote Mongoose. const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/test'); const Cat = mongoose.model('Cat', { name:mongoosejs.com - nodejs와 mongodb를 이어주는 가교 2. 설치 - 프로젝트 내 terminal > npm i mongoose - s..