개발/Node.js2024. 11. 12. 12:39MongoStore resave saveUninitialized

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에는 아무 정보나 넣을 수 있..

개발/Project2024. 11. 9. 15:24프로젝트 시작전 정리

1. 사용할 패키지들 node.js는 기존에 브라우저 안에서만 사용되던 언어였지만 브라우저 밖에서도 사용하기 위해 만들어졌으며, 프론트엔드와 백엔드에서 동시에 사용할 수 있다는 장점이 있다. node.js에는 npm을 통해 패키지를 관리한다. npm init을 사용하여 프로젝트를 생성하고 나면 package.json이 생성된다. json은 데이터를 전송할 때 사용하는 양식이며 package.json에는 해당 프로젝트의 패키지를 관리하기 위한 문서다. 우리가 npm을 사용하여 설치한 모든 것들은 package.json의 dependencies에 기록된다. dependencies는 프로젝트를 실행하기 위한, devDependencies는 개발자를 위한 패키지들이다. express라는 node.js의 프레임워..

개발/Node.js2024. 11. 8. 23:13Cookie Session / Express-Session / Locals

1. Cookie Session (1)  - 이전까지는 account가 존재하는지, account의 password가 맞는지만 확인하였음 - 이제는 서버가 로그인을 시도한 유저를 기억하는 방법을 알아야 함 - 그 방법 중 하나가 cookie이며, cookie를 이해하기 전 먼저 session에 대해 알아야 함 - session이란, 백엔드와 브라우저 간에 어떤 활동(history)을 했는지 기억(memory)하는걸 말함   - 백엔드와 브라우저간 정보가 있어야 됨 - 현재 home으로 이동하면 GET request가 발생하는데, 백엔드에서 HTML을 render하고 나면 연결이 끝남   - 즉 연결이 지속되지 않는 무상태(stateless)   - request를 받고 처리되면 서버도 브라우저도 곧바로 ..

개발/Node.js2024. 11. 8. 11:34Login / Bcrypt Compare

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..

개발/Node.js2024. 11. 8. 10:46Status Code

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..

개발/Node.js2024. 11. 7. 21:47User Authentication / Hash

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..

개발/Node.js2024. 11. 7. 15:50User Model

1. 유저 CRUD - 지금까지 video를 CRUD 하면서 배운 것들에 Authentication까지 추가 할 거임 - 유저가 로그인하는 것까지 구현하면서 로그인이 어떤 의미인지를 알아볼 예정 - 그리고 로그인한 유저를 어떻게 기억할지 구현 - 유저 생성에 관한 것들을 배우면서 깃허브에 로그인 하는 것 까지 구현 - 요약하면 ID는 이메일로, 거기에 비밀번호를 추가하고, 깃허브로 소셜 로그인 2. Schema 구성 - Video Model을 만들때와 똑같은 순서 - userSchema를 만들어 MongoDB와 mongoose에 User가 어떻게 생겼는지 알려줌 - static을 만들고 모델을 export 할 예정 - 그리고 이제 globalRouter 대신 rootRouter로 이름을 바꿀 예정// U..

개발/Node.js2024. 11. 4. 15:53More Schema, Router 수정

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..

실제 데이터를 입력해보기
개발/Node.js2024. 11. 4. 13:26실제 데이터를 입력해보기

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,..

Mongoose
개발/Node.js2024. 11. 1. 11:38Mongoose

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..

image