전체 글
-
쇼핑몰 등 실제 서비스에서 질문등?Node.js,MongoDB 2022. 4. 20. 12:50
1. Mongoose는 필수? MongoDB에 데이터를 넣고 뺄 때 라이브러리 2개 중 1개를 택할 수 있다. MongoDB Native Driver과 Mongoose가 있다. MongoDB Native Driver는 지금까지 사용한 것인데, 둘의 관계는 js와 jQuery같은 관계이다. Mongoose를 사용하면 약간 편해지며 validation(데이터 검증 작업 예를 들면, 한글아이디 입력을 막는것)이 쉬워진다. MongoDB Compass를 이용하면 Mongoose처럼 쉽게 사용할 수 있어서 필수는 아니다. 2. 보안은? 악성유저가 되어서 사이트를 테스트해보면 쉽다. 예를 들면, 회원가입시 너무 긴 아이디를 넣는다거나, 영어를 넣어야할 곳에 한글을 넣거나 이런건 if문으로 검사하면 끝이다. 이런 것..
-
이미지 업로드 & 이미지 서버 만들기Node.js,MongoDB 2022. 4. 19. 03:13
이미지 업로드기능을 만들어보자. upload.ejs라는 폴더를 만들고, 업로드페이지 // enctype="application/x-www-form-urlencoded"얘는 인코딩이 된 형식으로 보낼거냐 //근데 보통은 multipart/form-data 인코딩하지말고 그대로 전송함 전송 form태그를 이용해서 업로드하는 곳을 만들어준다. input태그에 type을 file로 하면 이미지를 업로드할 수 있다. 그리고, server.js에 get요청을 해준다. app.get('/upload', function(요청, 응답) { 응답.render('upload.ejs') }) /upload에 들어가면 upload.ejs파일을 불러오게끔 해준다. 이제 업로드는 할 수 있는데 업로드한 이미지를 저장해야한다. 보통..
-
구글클라우드 사용법Node.js,MongoDB 2022. 4. 19. 01:51
구글클라우드로 서버에 배포해보자. 1. server.js와 같은 위치에 app.yaml 파일을 만들어주고, runtime: nodejs env: flex manual_scaling: instances: 1 resources: cpu: 1 memory_gb: 0.5 disk_size_gb: 10 내용을 복사해준다. 2. 서버 포트가 8080인지 확인해준다. 구글클라우드가 기본적으로 사용하는 포트가 8080이기 때문이다. 3. MongoDB Atlas에서 Network Access메뉴에서 Whitelist IP를 모든아이피에서 허용으로 변경해준다. 여기서 아이피를 0.0.0.0으로 바꿔준다. 4. google cloud에 로그인하고 새로운 프로젝트를 만들거나 기존 프로젝트를 선택한다. 그 다음, App En..
-
router폴더와파일로 API 관리하기Node.js,MongoDB 2022. 4. 18. 21:50
app.get('/shop/shitrs', function(요청, 응답){ 응답.send('셔츠파는 페이지입니다.') }); app.get('/shop/pants', function(요청, 응답){ 응답.send('바지파는 페이지 입니다.') }); 이렇게, 비슷한 형태의 get요청이 있다면 route폴더에 묶어서 하나로 라우팅을 할 수 있다. 먼저, routes라는 폴더를 만들고, shop.js파일을 만들고 위의 두 get요청을 var router = require('express').Router();//라우터 필수 파일 router.get('/shop/shirts', function(요청, 응답){ 응답.send('셔츠파는 페이지입니다.')//글자를 보여주는 방법 }); router.get('/sho..
-
회원기능(회원만 삭제가능)Node.js,MongoDB 2022. 4. 18. 10:29
지금처럼 만들면 리스트에서 삭제를 누르면 누구나 글 삭제가 가능하다. 이제, 내가 쓴 글만 삭제 가능하게 만들어보자. 여러명의 유저가 있어야 할 것 같아서 회원가입을 먼저 만들어보자 아이디 비밀번호 가입 아이디와 비밀번호를 입력해 /register로 보내주는 form을 만들고 post요청하면 서버에서 db에 저장하면 완성이다. server.js에서 작성할 땐 passport 셋팅부분 아래에 작성해야 한다. app.post('/register',function(요청, 응답){ db.collection('login').insertOne( { id : 요청.body.id, pw : 요청.body.pw } ,function(에러, 결과){ 응답.redirect('/'); }) }) /register로 들어가면 ..
-
검색기능 (URL query string, indexing, Search index)Node.js,MongoDB 2022. 4. 13. 13:42
list.ejs파일에 이렇게 input과 검색버튼을 만들어주고, query string에 대해 알아보자. 검색 먼저, 검색버튼을 누르면 서버에서 post요청을 해야한다. 그리고, 서버는 DB에서 데이터 꺼내줌 collection().findOne() 또는 collection().find().toArray()로 꺼낸다. 근데 post요청 말고, 새로운방법으로 get요청으로 서버로 데이터 전달가능하다. get은 url만 잘 보내면되는데, url에 정보를 담아서 보내면 된다. 이걸 query string라고 부름 query string 작성 방법은 url뒤에 ?데이터이름=데이터값 이렇게 쓰며, 데이터이름으로 데이터값이 서버로 전송된다. //검색버튼 누르면 서버로 GET요청을 한다. +query string으로..
-
.env파일의 환경변수 관리Node.js,MongoDB 2022. 4. 13. 13:39
MongoClient.connect('mongodb+srv://ross1222:dlwnsdud12@ cluster0.ivzfq.mongodb.net/todoapp?retryWrites=true&w=majority', function(에러, client) { if(에러){return console.log(에러)} db = client.db('todoapp'); app.listen(8080, function(){ console.log('listening on 8080') }); }) server.js의 상단에 보면 connect부분에 mongodb+srv라는게 있다. 이런 값은 다른 개발환경이나 다른 컴퓨터로 코드를 옮기면 수정이 필요할 수 있다. 예를 들면, 다른 컴퓨터에선 8070포트를 열거나, DB접속..
-
Session방식 로그인 기능 구현Node.js,MongoDB 2022. 4. 12. 13:49
우선, 3개의 라이브러리가 필요하다. npm install passport passport-local express-session passport, passport-local, express-session을 설치해주고, const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const session = require('express-session'); app.use(session({secret : '비밀코드', resave : true, saveUninitialized : false})); app.use(passport.initialize()); app.use(passport.session..