mongoose mongoose를 사용하여 mongoDB 작성 MongoDB를 조작하기 위한 npm 모듈. MongoDB의 필드에 다양한 입력 설정을 할 수 있다. 필드에 삽입할 데이터 타입을 설정할 수 있다. MySQL 데이터는 "테이블"의 형태로 저장된다. ・열(column) ・행(row) MongoDB(NoSQL) 데이터는 '컬렉션' 형태로 저장 ・필드(열에 대응) ・문서(행에 대응) · 앱 작성시의 파일 구성 예 · "npm 패키지 "mongoo... mongooseMongoDB mongoDB Atlas + mongoose로 웹 앱을 어떻게 시작합니까? 우선은 등록 얀. 1.1 Add New User Security 안에 있는 "Database Access"항목에 가면, Add New Database User가 있기 때문에 거기에 간다. 1.2 whitelist 설정 ADD IP ADDRESS에서 Whitelist Entry를 설정합니다. 일단, 이것은 "ALLOW ACCESS FROM ANYWHERE"를 누르고. 이것으로 Atlas 측의 ... mongooseExpress.jsMongoDBatlasNode.js ESP32를 MQTT 브로커로 사용해 보았습니다. 라는 web server용의 라이브러리를 사용해 ESP32를 브로커로 해 보았으므로, 그 정보 공유입니다. ※ESP-IDF로 개발하고 있습니다 앞으로 설명하는 절차는 궁극적으로 아래 그림과 같이 동작을 확인합니다. ESP32( 사용)를 브로커로 실행하고 MQTT Box(PC 응용 프로그램)에서 보낸 {'hello':'world'}라는 문자열을 ESP32를 통해 다시 MQTT Box에서 받는 ... mongooseESP-WROOM-32mqttESP-IDFESP32 mongoose로 지리 정보 처리 (aggregate().near()) MongoDB Server가 로컬에서 실행되고 있다고 가정 동작 확인 환경 Windows10, VSCode Node v8.11.3 "mongodb": "3.1.6", "mongoose": "5.3.1", 참고 여러 가지가 있지만 Aggregate의 $ geoNear를 사용하면 거리도 얻을 수있어 좋은 느낌 Mongoose에서는 near이므로 주의. 왜 geoNear가 아닌지 알 수 없습니다.... mongoosegeojsonMongoDB 몽구스 모델만으로 GraphQL 서버 만들기 소개 Mongoose는 MongoDB 및 Node.js용 ODM(개체 데이터 모델링) 라이브러리이며 NodeJ 개발자에게 가장 친숙한 라이브러리 중 하나입니다. Mongoose는 REST 응용 프로그램에 널리 사용되었습니다. 이 등장했습니다. 이 언어는 필요한 것을 정확히 얻기 위한 API용 쿼리 언어로 두 가지를 연결하는 간단한 인터페이스가 없는 것 같습니다. 이 격차를 메우고 몽구스 모델... mongodbnodegraphqlmongoose NVM으로 QueryCursor.js 몽구스 오류를 해결하는 방법 Downgrading your NodeJS version to 12.x resolves this error. Mongoose 버전 6.3.2로 작업 중이고 NodeJS 버전이 >14.x 또는 =17.5.0(이 게시물을 작성할 당시 최신 버전임)으로 업데이트된 경우 다음 오류가 발생했을 수 있습니다. 위 오류는 Mongoose와 NodeJS 버전 17.5 간의 비호환성 문제로 인해 발생합니다.... webdevnvmmongoosenode Azure Cosmos DB를 MongoDB로 Node.js에서 사용해보십시오. MongoDB 이용을 검토해 조사하고 있어 발견했으므로 시험에 사용해 보겠습니다. macOS High Sierra Node.js v9.5.0 Mongoose v5.0.6 입니다. 우주감 있고 멋있다. 기능은 같다. AWS계도 GCP계도 이 손의 불평은 비슷하기 때문에 거기까지 신경쓰지 않는 녀석입니다() 작성은 Azure 사용하고 있는 사람이라면 통상의 포털 화면으로부터 자원 작성으로 갈 수... mongooseCosmosDBAzureMongoDBNode.js 몽구스 쿼리 패턴 MongoDB에서 데이터를 가져오려면 mongoose를 사용할 수 있습니다. 몽구스에는 다른 유형의 쿼리가 있습니다. 몽구스 문서에서 모든 세부 정보를 찾을 수 있습니다. 대부분의 초보자는 몽구스 CRUD 기능에 대해 알고 있습니다. 이 쿼리가 마음에 드셨으면 합니다. 다섯 가지 모델[src/models]이 있습니다. 2. 제품 - 이름, Category 컬렉션별 catId 참조 및 SubC... nodemongoosejavascriptbeginners Node.js를 사용하여 데이터 생성, 읽기, 업데이트, 삭제 - Mongoose 이 기사에서는 상점이 있으며 CRUD 프로세스를 사용하기 위해 데이터베이스에 물건을 저장할 것입니다. 먼저 다음 코드를 사용하여 터미널이 있는 응용 프로그램에 mongoose 패키지를 설치해야 합니다. 그런 다음 express를 통해 서버를 실행하고 모델의 파일을 생성하고 아래와 같이 명령을 작성합니다. 그런 다음 컨트롤러 파일에서 내 CRUD의 코드를 단계별로 작성합니다. 템플릿 엔진 EJ... mongodbmongoosecrudnode 추가 단계: 게시물 작성 1- 우리는 두 개의 다른 경로에 대한 작업과 함께 사용자와 게시물을 만들기 위한 두 가지 간단한 양식을 만들었습니다. 3- 각 양식 제출의 각 경로에 대해 하나씩 두 가지 기능/컨트롤러를 정의했습니다. 5- 두 명의 사용자를 만들어 데이터베이스에 저장했습니다. 이제 게시물을 만들어 데이터베이스에 저장할 차례입니다. 작성자와 콘텐츠를 제공하지 않으면 게시물을 작성할 수 없습니다. 그리고 데이... mongooseexpressjavascriptbeginners Create Account #01 이번에는 계정을 생성하는 페이지를 만들어 보겠다. 그리고 여기에 인증(Authentication)도 추가해 볼거다. 유저가 로그인 하는걸 구현해 보면서 로그인이 어떤 의미를 가지고 있는지 알아 보겠다. 그리고 어떻게 로그인한 유저를 기억하게 만들 수 있는지도 알아 볼거다. GitHub로 로그인 하는것도 구현해 볼거다. 그러니까 이메일, 비밀번호로 로그인하는거랑 깃허브 로그인을 구현해 볼거다.... mongoosemongodbnode.jsschemaJavaScriptJavaScript Create Account #02 그리고 User모델도 만들어 봤다. 그리고 console에서 에러는 봤다.(현재는 안 생기는것 같다.) 업데이트 하라고 알려주는 거다. 그러면 새로운 버전을 쓰게 되고 경고가 나타나지 않게 된다. 이런 경고가 나타나면 그냥 진행해도 된다. 이제 userController 에서 유저 생성 하는걸 만들어 본다. 현재 지금은 join을 클릭하면 백엔드에 요청을 보내고 데이터를 console.log... mongoosemongodbJavaScriptnode.jsJavaScript Creating Account #03 절대 DB에 password를 저장하면 안된다. 어떤 회사든지 해킹 당하면 이런 식으로 DB에 password를 저장한걸 후회하게 된다. 그리고 보통 사람들은 같은 password를 여러 사이트에서 사용하기에 대부분의 사람들은 같은 password를 사용하기 때문이다. 만약 서비스에서 password를 관리하는 사람이라면 이런식으로 DB에 password를 저장하지 않으면 된다. 그래서 pa... hashmongoosemongodbnode.jssaltRoundsJavaScriptpre("save")bcryptHashingpasswordHashing Status Codes 그래서 status code(상태코드)라는걸 알 필요가 있다. 응답의 상태 코드가 200이라고 나와 있다. 위키피디아에서 상태 코드 200이 뭘 의미 하는지 응답으로 200을 받으면 구글 크롬이 계정 생성이 성공적이었다고 판단하는거다. 그래서 패스워드를 저장할거냐고 물어보는거다. 계정 생성이 성공적으로 됐다고 판단하면 패스워드를 저장 할거냐고 물어보는거다. 바로 상태 코드 200을 응답으로 ... mongoosemongodbnode.jsJavaScriptstatusJavaScript Login #01 이미 사용중인 username과 password가 일치 하는지 확인하고 있다. videoController에서 했던 것처럼 try~catch를 사용해서 에러를 방지 할수 있다. User를 만들때도 try~catch를 쓰고 있는거다. 이제 로그인 페이지를 만들어 보도록 한다. 로그인 하세요 ->" 까지 잘 나온다. 이제 login을 클릭하면 /login으로 넘어가게 된다. 순서를 바꿔 주고 r... mongoosemongodbJavaScriptnode.jsJavaScript Login #02 보다시피 이 모든걸 같이 구현하게 되면 정말 멋진 기능을 만들어 낼수 있다. 이런 것들을 다 쓰고 있다. DB를 보면 해싱된 패스워드가 있다. 그래서 DB에 있는 패스워드를 해석할 수 없다. 그런데 그 패스워드의 해시값을 알고 있다. 뭘 하면 되냐면 로그인할 때 유저가 입력한 패스워드를 가져다가 해싱을 하면 되는거다. 그러면 패스워드를 해싱하고 나온 해시값을 비교하면 되는거다. 그리고 만약 ... mongoosemongodbnode.jsJavaScriptComparebcryptCompare Sessions and Cookies #01 이 로그인 개념을 설명할 필요도 없을 거다. 그런데 이게 작동하려면 백엔드와 브라우저가 서로에 대한 정보를 가지고 있어야 한다. 이 둘 사이 연결에 state가 없는 거다. 그래서 유저한테 어떤 정보를 남겨줘야 한다. 그래서 유저가 로그인 할때마다 유저한테 뭔가 줘야 한다. 유저가 요청을 보낼때 마다 그 텍스트를 같이 보내달라고 하는 거다. 헷갈린다면 세션을 직접 써보고 이 텍스트가 뭔지에 ... mongoosecookiemongodbnode.jsSessionsJavaScriptJavaScript Sessions and Cookies #02 백엔드의 각 세션들은 id를 가지고 있었고 그 id를 브라우저한테 보냈다. 그러면 브라우저가 요청을 보낼때마다 그 id를 같이 보내준다. 백엔드에 요청을 보낼때 마다 id를 같이 보내줘야 한다. 그리고 세션 id를 가지고 있으면 세션 object에 정보를 추가 할수 있다. 다른 세션 id가 나오고 있다. 브라우저마다 서로 다른 세션 id를 가진 텍스트를 보내고 있다. 서버가 브라우저한테 세션... mongoosemongodbnode.jsSessionsJavaScriptcookiesJavaScript Logged In User #01 잠에 들고 다시 일어나더라도 핸드폰 번호을 기억하고 있는 것처럼 이걸 다 기억할 수는 없으니까 예를 들어, 누군가가 "너의 핸드폰 번호는 뭐니?" 라고 물어봤는데 누군지 모르겠다면 id카드를 받아서 "이게 너의 핸드폰 번호구나!" 라고 알수 있다. 그리고 잠에 들었다 다시 일어나서 핸드폰 번호가 뭐냐고 다시 물어보면 이제 여길 보면 세션 DB가 있는데 유저가 로그인하면 그 유저에 대한 정보를... mongoosemongodbnode.jssessionloggedInJavaScriptJavaScript Logged In User #02 새로고침을 하니까 에러가 있다. node를 보면 console.log된게 많이 있다. pug template에서 locals에 접근할수 있다. locals를 공유 할수 있도록 설정되어 있다. 모든 pug파일들은 locals object에 접근할수 있다. 모든 template에서 쓸수 있다. 보다시피 이 title은 바뀌지 않고 있다. 그리고 locals는 template의 모든 곳에 있다. ... mongoosemongodbnode.jssessionbooleanloggedInJavaScriptmiddlewareJavaScript Mongo Store 우선 Note 를 보면 session data 가 쿠키 안에 저장 되지 않는다고 적혀있다. session ID만 저장 된다고 되어 있다. session data는 서버쪽에 저장된다. session id는 쿠키에 저장하지만 데이터 자체는 그리고 다른 주의 사항으로 서버에 저장되는 default session storage는 그래서 session store를 사용해야 한다. 다양한 databas... mongoosemongodbnode.jssessionMongoStoreJavaScriptJavaScript Uninitialized Sessions 보이고 있는 쿠키를 지운다. 다시 쿠키를 지워 본다. 쿠키를 하나 받았고, DB에도 하나 더 생겼다. 이말은 방문하는 모든 사용자에 대해 쿠키를 만들어주고 세션을 만든다는 거다. 사용자에게 쿠키를 주고 session은 DB에 저장 하는거다. 해결책은 모든 방문자에 대해서 쿠키를 주지 않는 거다. 기억하고 싶은 사용자에 대해서만 쿠키를 주는 거다. 뭘 하든지간에 기억할 필요가 없기 때문에 쿠키... mongoosemongodbnode.jssessioninitializeJavaScriptUninitializedsecretJavaScript Expiration and Secrets Name,Value,Domain,Path,Expires / Max-Age가 있다. 그리고 Size,HttpOnly,Secure,SameSite,Priority등이 있다. 쿠키에 sign하는 이유는 백엔드가 쿠키를 줬다는걸 보여주기 위함이다. 왜냐하면 session hijack(납치)라는 공격유형이 있다. 이걸 잘 보호햐아 하는데 누군가 쿠키를 훔쳐서 마치 그 사람인척 할수 있다. 이 stri... MaxAgemongodbmongoosenode.js.envJavaScriptdomainsecret.env Mongoose에서 nested field의 ObjectId 타입의 자동 변환이 안 돼요 분명히 mongoose 스키마 상에서는 똑같은 ObjectId 타입의 필드인데, 어떤 놈은 string으로 저장되고, 다른 놈은 ObjectId로 DB에 저장되고 있었다. mongoose 스키마에서 nested field로 지정된 필드가 ObjectId 필드인 경우, mongoose가 hex string을 ObjectId로 자동 변환해주지 않는다. mongoose는 기본적으로 스키마 상에서 ... mongoosemongodbmongodb Github Login #02 예를 들자면 여기 나와 있는 모든 scope을 보면 여기에서 admin scope을 가져 올수 있다. 이제 Personal user data라고 명시되어 있다. 그러면 이제 모든 Personal data에 접근 가능하다. 보다시피 전부 URL에 기반하고 있다. 그리고 이것들은 전부 URL에 공백으로 구분해서 쓰면 된다. 여기에 " 이 어플리케이션은 어떤 repository든 삭제 할수 있다"... mongoosemongodbnode.jsuser:emailscoperead:userJavaScriptgithubJavaScript Github Login #01 깃헙 로그인을 사용해보려고 한다. 하지만 다른 SNS랑 흐름은 비슷하다. 물론 구글 같은 곳은 더 많은 걸 요청 하게 될거다. 왜냐하면 구글은 더 많은 정ㅂ조를 가지고 있고, 많은 정보를 받아 올수 있기 때문이다. 그리고 그 흐름은 다음과 같다. 해야하는건 사용자를 깃헙으로 보내는거다. 그리고 정보를 공유하는 것을 승인하게 될거다. 그러면 깃헙은 사용자를 웹사이트로 돌려보낼거다. 그 단계가 ... mongoosemongodbnode.jsJavaScriptgithubJavaScript 유튜브 클로닝 #5-4 MongoDB : Mongoose 이용해 데이터 형식 정의하기 🔖 강의 범위: #6.9~6.11 지난 시간에는 mongoDB 와 mongoose 의 개념을 알아보고 설치한 뒤, db 에 연결까지 해보았다. 다음 시간에는 연결된 db 에 요청을 보내고, 수정하고, 삭제하고, 받아올 수 있도록 설정해 줄 것이다. 그렇다. CRUD (create, read, update, delete) 설정을 해주는 시간을 가질 것이다. 이번 시간에는 CRUD 작업을 하기전... .model()mongoose강의youtube.schema().model() 유튜브 클로닝 #5-5 MongoDB: Mongoose 이용해 불러온 데이터 이용하기 저번 시간에는 CRUD 작업을 하기전 설정을 위해 mongoose.Schema, mongoose.model() 을 이용하여 db 에 보낼 데이터 형식을 정의해주었다. 다른 작업에 앞서 db 와 관련된 모든 데이터 형식들을 import 할 예정이니 server.js 파일이 길어질 걸 고려해서 깔끔하게 둘로 나누기로 한다. nodemon 재설정: nodemon 은 server 가 시작될 때 실행... mongooseyoutube.find()강의.find() 유튜브 클로닝 #5-3 MongoDB: Introduction (finally) of MongoDB & Mongoose 진짜 db 의 시간. 데이터베이스의 종류는 다양하지만 그중 mongoDB 를 사용할 것이며, mongoDB 사용을 원활히 하기 위해 또다른 패키지인 mongoose 에 대해 알아볼 것이다. 그 중 유명한 데이터 베이스 중 하나인 MongoDB 를 사용할 것이다. MongoDB 의 장점 데이터들이 이런식으로 정리된다.) MongoDB 설치 MongoDB 다운로드 사이트 MongoDB 설치 (M... mongoosemongodb강의youtubemongodb 이전 기사 보기
mongoose를 사용하여 mongoDB 작성 MongoDB를 조작하기 위한 npm 모듈. MongoDB의 필드에 다양한 입력 설정을 할 수 있다. 필드에 삽입할 데이터 타입을 설정할 수 있다. MySQL 데이터는 "테이블"의 형태로 저장된다. ・열(column) ・행(row) MongoDB(NoSQL) 데이터는 '컬렉션' 형태로 저장 ・필드(열에 대응) ・문서(행에 대응) · 앱 작성시의 파일 구성 예 · "npm 패키지 "mongoo... mongooseMongoDB mongoDB Atlas + mongoose로 웹 앱을 어떻게 시작합니까? 우선은 등록 얀. 1.1 Add New User Security 안에 있는 "Database Access"항목에 가면, Add New Database User가 있기 때문에 거기에 간다. 1.2 whitelist 설정 ADD IP ADDRESS에서 Whitelist Entry를 설정합니다. 일단, 이것은 "ALLOW ACCESS FROM ANYWHERE"를 누르고. 이것으로 Atlas 측의 ... mongooseExpress.jsMongoDBatlasNode.js ESP32를 MQTT 브로커로 사용해 보았습니다. 라는 web server용의 라이브러리를 사용해 ESP32를 브로커로 해 보았으므로, 그 정보 공유입니다. ※ESP-IDF로 개발하고 있습니다 앞으로 설명하는 절차는 궁극적으로 아래 그림과 같이 동작을 확인합니다. ESP32( 사용)를 브로커로 실행하고 MQTT Box(PC 응용 프로그램)에서 보낸 {'hello':'world'}라는 문자열을 ESP32를 통해 다시 MQTT Box에서 받는 ... mongooseESP-WROOM-32mqttESP-IDFESP32 mongoose로 지리 정보 처리 (aggregate().near()) MongoDB Server가 로컬에서 실행되고 있다고 가정 동작 확인 환경 Windows10, VSCode Node v8.11.3 "mongodb": "3.1.6", "mongoose": "5.3.1", 참고 여러 가지가 있지만 Aggregate의 $ geoNear를 사용하면 거리도 얻을 수있어 좋은 느낌 Mongoose에서는 near이므로 주의. 왜 geoNear가 아닌지 알 수 없습니다.... mongoosegeojsonMongoDB 몽구스 모델만으로 GraphQL 서버 만들기 소개 Mongoose는 MongoDB 및 Node.js용 ODM(개체 데이터 모델링) 라이브러리이며 NodeJ 개발자에게 가장 친숙한 라이브러리 중 하나입니다. Mongoose는 REST 응용 프로그램에 널리 사용되었습니다. 이 등장했습니다. 이 언어는 필요한 것을 정확히 얻기 위한 API용 쿼리 언어로 두 가지를 연결하는 간단한 인터페이스가 없는 것 같습니다. 이 격차를 메우고 몽구스 모델... mongodbnodegraphqlmongoose NVM으로 QueryCursor.js 몽구스 오류를 해결하는 방법 Downgrading your NodeJS version to 12.x resolves this error. Mongoose 버전 6.3.2로 작업 중이고 NodeJS 버전이 >14.x 또는 =17.5.0(이 게시물을 작성할 당시 최신 버전임)으로 업데이트된 경우 다음 오류가 발생했을 수 있습니다. 위 오류는 Mongoose와 NodeJS 버전 17.5 간의 비호환성 문제로 인해 발생합니다.... webdevnvmmongoosenode Azure Cosmos DB를 MongoDB로 Node.js에서 사용해보십시오. MongoDB 이용을 검토해 조사하고 있어 발견했으므로 시험에 사용해 보겠습니다. macOS High Sierra Node.js v9.5.0 Mongoose v5.0.6 입니다. 우주감 있고 멋있다. 기능은 같다. AWS계도 GCP계도 이 손의 불평은 비슷하기 때문에 거기까지 신경쓰지 않는 녀석입니다() 작성은 Azure 사용하고 있는 사람이라면 통상의 포털 화면으로부터 자원 작성으로 갈 수... mongooseCosmosDBAzureMongoDBNode.js 몽구스 쿼리 패턴 MongoDB에서 데이터를 가져오려면 mongoose를 사용할 수 있습니다. 몽구스에는 다른 유형의 쿼리가 있습니다. 몽구스 문서에서 모든 세부 정보를 찾을 수 있습니다. 대부분의 초보자는 몽구스 CRUD 기능에 대해 알고 있습니다. 이 쿼리가 마음에 드셨으면 합니다. 다섯 가지 모델[src/models]이 있습니다. 2. 제품 - 이름, Category 컬렉션별 catId 참조 및 SubC... nodemongoosejavascriptbeginners Node.js를 사용하여 데이터 생성, 읽기, 업데이트, 삭제 - Mongoose 이 기사에서는 상점이 있으며 CRUD 프로세스를 사용하기 위해 데이터베이스에 물건을 저장할 것입니다. 먼저 다음 코드를 사용하여 터미널이 있는 응용 프로그램에 mongoose 패키지를 설치해야 합니다. 그런 다음 express를 통해 서버를 실행하고 모델의 파일을 생성하고 아래와 같이 명령을 작성합니다. 그런 다음 컨트롤러 파일에서 내 CRUD의 코드를 단계별로 작성합니다. 템플릿 엔진 EJ... mongodbmongoosecrudnode 추가 단계: 게시물 작성 1- 우리는 두 개의 다른 경로에 대한 작업과 함께 사용자와 게시물을 만들기 위한 두 가지 간단한 양식을 만들었습니다. 3- 각 양식 제출의 각 경로에 대해 하나씩 두 가지 기능/컨트롤러를 정의했습니다. 5- 두 명의 사용자를 만들어 데이터베이스에 저장했습니다. 이제 게시물을 만들어 데이터베이스에 저장할 차례입니다. 작성자와 콘텐츠를 제공하지 않으면 게시물을 작성할 수 없습니다. 그리고 데이... mongooseexpressjavascriptbeginners Create Account #01 이번에는 계정을 생성하는 페이지를 만들어 보겠다. 그리고 여기에 인증(Authentication)도 추가해 볼거다. 유저가 로그인 하는걸 구현해 보면서 로그인이 어떤 의미를 가지고 있는지 알아 보겠다. 그리고 어떻게 로그인한 유저를 기억하게 만들 수 있는지도 알아 볼거다. GitHub로 로그인 하는것도 구현해 볼거다. 그러니까 이메일, 비밀번호로 로그인하는거랑 깃허브 로그인을 구현해 볼거다.... mongoosemongodbnode.jsschemaJavaScriptJavaScript Create Account #02 그리고 User모델도 만들어 봤다. 그리고 console에서 에러는 봤다.(현재는 안 생기는것 같다.) 업데이트 하라고 알려주는 거다. 그러면 새로운 버전을 쓰게 되고 경고가 나타나지 않게 된다. 이런 경고가 나타나면 그냥 진행해도 된다. 이제 userController 에서 유저 생성 하는걸 만들어 본다. 현재 지금은 join을 클릭하면 백엔드에 요청을 보내고 데이터를 console.log... mongoosemongodbJavaScriptnode.jsJavaScript Creating Account #03 절대 DB에 password를 저장하면 안된다. 어떤 회사든지 해킹 당하면 이런 식으로 DB에 password를 저장한걸 후회하게 된다. 그리고 보통 사람들은 같은 password를 여러 사이트에서 사용하기에 대부분의 사람들은 같은 password를 사용하기 때문이다. 만약 서비스에서 password를 관리하는 사람이라면 이런식으로 DB에 password를 저장하지 않으면 된다. 그래서 pa... hashmongoosemongodbnode.jssaltRoundsJavaScriptpre("save")bcryptHashingpasswordHashing Status Codes 그래서 status code(상태코드)라는걸 알 필요가 있다. 응답의 상태 코드가 200이라고 나와 있다. 위키피디아에서 상태 코드 200이 뭘 의미 하는지 응답으로 200을 받으면 구글 크롬이 계정 생성이 성공적이었다고 판단하는거다. 그래서 패스워드를 저장할거냐고 물어보는거다. 계정 생성이 성공적으로 됐다고 판단하면 패스워드를 저장 할거냐고 물어보는거다. 바로 상태 코드 200을 응답으로 ... mongoosemongodbnode.jsJavaScriptstatusJavaScript Login #01 이미 사용중인 username과 password가 일치 하는지 확인하고 있다. videoController에서 했던 것처럼 try~catch를 사용해서 에러를 방지 할수 있다. User를 만들때도 try~catch를 쓰고 있는거다. 이제 로그인 페이지를 만들어 보도록 한다. 로그인 하세요 ->" 까지 잘 나온다. 이제 login을 클릭하면 /login으로 넘어가게 된다. 순서를 바꿔 주고 r... mongoosemongodbJavaScriptnode.jsJavaScript Login #02 보다시피 이 모든걸 같이 구현하게 되면 정말 멋진 기능을 만들어 낼수 있다. 이런 것들을 다 쓰고 있다. DB를 보면 해싱된 패스워드가 있다. 그래서 DB에 있는 패스워드를 해석할 수 없다. 그런데 그 패스워드의 해시값을 알고 있다. 뭘 하면 되냐면 로그인할 때 유저가 입력한 패스워드를 가져다가 해싱을 하면 되는거다. 그러면 패스워드를 해싱하고 나온 해시값을 비교하면 되는거다. 그리고 만약 ... mongoosemongodbnode.jsJavaScriptComparebcryptCompare Sessions and Cookies #01 이 로그인 개념을 설명할 필요도 없을 거다. 그런데 이게 작동하려면 백엔드와 브라우저가 서로에 대한 정보를 가지고 있어야 한다. 이 둘 사이 연결에 state가 없는 거다. 그래서 유저한테 어떤 정보를 남겨줘야 한다. 그래서 유저가 로그인 할때마다 유저한테 뭔가 줘야 한다. 유저가 요청을 보낼때 마다 그 텍스트를 같이 보내달라고 하는 거다. 헷갈린다면 세션을 직접 써보고 이 텍스트가 뭔지에 ... mongoosecookiemongodbnode.jsSessionsJavaScriptJavaScript Sessions and Cookies #02 백엔드의 각 세션들은 id를 가지고 있었고 그 id를 브라우저한테 보냈다. 그러면 브라우저가 요청을 보낼때마다 그 id를 같이 보내준다. 백엔드에 요청을 보낼때 마다 id를 같이 보내줘야 한다. 그리고 세션 id를 가지고 있으면 세션 object에 정보를 추가 할수 있다. 다른 세션 id가 나오고 있다. 브라우저마다 서로 다른 세션 id를 가진 텍스트를 보내고 있다. 서버가 브라우저한테 세션... mongoosemongodbnode.jsSessionsJavaScriptcookiesJavaScript Logged In User #01 잠에 들고 다시 일어나더라도 핸드폰 번호을 기억하고 있는 것처럼 이걸 다 기억할 수는 없으니까 예를 들어, 누군가가 "너의 핸드폰 번호는 뭐니?" 라고 물어봤는데 누군지 모르겠다면 id카드를 받아서 "이게 너의 핸드폰 번호구나!" 라고 알수 있다. 그리고 잠에 들었다 다시 일어나서 핸드폰 번호가 뭐냐고 다시 물어보면 이제 여길 보면 세션 DB가 있는데 유저가 로그인하면 그 유저에 대한 정보를... mongoosemongodbnode.jssessionloggedInJavaScriptJavaScript Logged In User #02 새로고침을 하니까 에러가 있다. node를 보면 console.log된게 많이 있다. pug template에서 locals에 접근할수 있다. locals를 공유 할수 있도록 설정되어 있다. 모든 pug파일들은 locals object에 접근할수 있다. 모든 template에서 쓸수 있다. 보다시피 이 title은 바뀌지 않고 있다. 그리고 locals는 template의 모든 곳에 있다. ... mongoosemongodbnode.jssessionbooleanloggedInJavaScriptmiddlewareJavaScript Mongo Store 우선 Note 를 보면 session data 가 쿠키 안에 저장 되지 않는다고 적혀있다. session ID만 저장 된다고 되어 있다. session data는 서버쪽에 저장된다. session id는 쿠키에 저장하지만 데이터 자체는 그리고 다른 주의 사항으로 서버에 저장되는 default session storage는 그래서 session store를 사용해야 한다. 다양한 databas... mongoosemongodbnode.jssessionMongoStoreJavaScriptJavaScript Uninitialized Sessions 보이고 있는 쿠키를 지운다. 다시 쿠키를 지워 본다. 쿠키를 하나 받았고, DB에도 하나 더 생겼다. 이말은 방문하는 모든 사용자에 대해 쿠키를 만들어주고 세션을 만든다는 거다. 사용자에게 쿠키를 주고 session은 DB에 저장 하는거다. 해결책은 모든 방문자에 대해서 쿠키를 주지 않는 거다. 기억하고 싶은 사용자에 대해서만 쿠키를 주는 거다. 뭘 하든지간에 기억할 필요가 없기 때문에 쿠키... mongoosemongodbnode.jssessioninitializeJavaScriptUninitializedsecretJavaScript Expiration and Secrets Name,Value,Domain,Path,Expires / Max-Age가 있다. 그리고 Size,HttpOnly,Secure,SameSite,Priority등이 있다. 쿠키에 sign하는 이유는 백엔드가 쿠키를 줬다는걸 보여주기 위함이다. 왜냐하면 session hijack(납치)라는 공격유형이 있다. 이걸 잘 보호햐아 하는데 누군가 쿠키를 훔쳐서 마치 그 사람인척 할수 있다. 이 stri... MaxAgemongodbmongoosenode.js.envJavaScriptdomainsecret.env Mongoose에서 nested field의 ObjectId 타입의 자동 변환이 안 돼요 분명히 mongoose 스키마 상에서는 똑같은 ObjectId 타입의 필드인데, 어떤 놈은 string으로 저장되고, 다른 놈은 ObjectId로 DB에 저장되고 있었다. mongoose 스키마에서 nested field로 지정된 필드가 ObjectId 필드인 경우, mongoose가 hex string을 ObjectId로 자동 변환해주지 않는다. mongoose는 기본적으로 스키마 상에서 ... mongoosemongodbmongodb Github Login #02 예를 들자면 여기 나와 있는 모든 scope을 보면 여기에서 admin scope을 가져 올수 있다. 이제 Personal user data라고 명시되어 있다. 그러면 이제 모든 Personal data에 접근 가능하다. 보다시피 전부 URL에 기반하고 있다. 그리고 이것들은 전부 URL에 공백으로 구분해서 쓰면 된다. 여기에 " 이 어플리케이션은 어떤 repository든 삭제 할수 있다"... mongoosemongodbnode.jsuser:emailscoperead:userJavaScriptgithubJavaScript Github Login #01 깃헙 로그인을 사용해보려고 한다. 하지만 다른 SNS랑 흐름은 비슷하다. 물론 구글 같은 곳은 더 많은 걸 요청 하게 될거다. 왜냐하면 구글은 더 많은 정ㅂ조를 가지고 있고, 많은 정보를 받아 올수 있기 때문이다. 그리고 그 흐름은 다음과 같다. 해야하는건 사용자를 깃헙으로 보내는거다. 그리고 정보를 공유하는 것을 승인하게 될거다. 그러면 깃헙은 사용자를 웹사이트로 돌려보낼거다. 그 단계가 ... mongoosemongodbnode.jsJavaScriptgithubJavaScript 유튜브 클로닝 #5-4 MongoDB : Mongoose 이용해 데이터 형식 정의하기 🔖 강의 범위: #6.9~6.11 지난 시간에는 mongoDB 와 mongoose 의 개념을 알아보고 설치한 뒤, db 에 연결까지 해보았다. 다음 시간에는 연결된 db 에 요청을 보내고, 수정하고, 삭제하고, 받아올 수 있도록 설정해 줄 것이다. 그렇다. CRUD (create, read, update, delete) 설정을 해주는 시간을 가질 것이다. 이번 시간에는 CRUD 작업을 하기전... .model()mongoose강의youtube.schema().model() 유튜브 클로닝 #5-5 MongoDB: Mongoose 이용해 불러온 데이터 이용하기 저번 시간에는 CRUD 작업을 하기전 설정을 위해 mongoose.Schema, mongoose.model() 을 이용하여 db 에 보낼 데이터 형식을 정의해주었다. 다른 작업에 앞서 db 와 관련된 모든 데이터 형식들을 import 할 예정이니 server.js 파일이 길어질 걸 고려해서 깔끔하게 둘로 나누기로 한다. nodemon 재설정: nodemon 은 server 가 시작될 때 실행... mongooseyoutube.find()강의.find() 유튜브 클로닝 #5-3 MongoDB: Introduction (finally) of MongoDB & Mongoose 진짜 db 의 시간. 데이터베이스의 종류는 다양하지만 그중 mongoDB 를 사용할 것이며, mongoDB 사용을 원활히 하기 위해 또다른 패키지인 mongoose 에 대해 알아볼 것이다. 그 중 유명한 데이터 베이스 중 하나인 MongoDB 를 사용할 것이다. MongoDB 의 장점 데이터들이 이런식으로 정리된다.) MongoDB 설치 MongoDB 다운로드 사이트 MongoDB 설치 (M... mongoosemongodb강의youtubemongodb 이전 기사 보기