데이터베이스 (17) 썸네일형 리스트형 SQLite Studio로 아주 쉽게 DB에 table 생성하고 데이터 삽입, 제거해보기 SQLite는 아주 가벼운 데이터베이스 관리 프로그램(DBMS)입니다. 가볍다는 말은 기능이 적다는 말도 되지만 간편하게 사용할 수 있다는 말도 됩니다. 실제로 SQLite는 하나의 파일에 데이터베이스 전체를 기록하기 때문에 해당 파일만 백업하면 됩니다. 다른 장점으로는 표준 SQL 문법을 지원하기 때문에 MariaDB나 MySQL을 사용해보셨다면 SQLite에 무리없이 적응하실 수 있습니다. 물론 가벼운 DBMS 프로그램인 만큼 대량의 데이터를 다루는 것은 어렵습니다. 그래도 DB 공부를 목적으로 한다면 가장 간단하고 편리한 학습 도구라고 할 수 있겠습니다. 오늘은 SQLite Studio를 이용해서 GUI 환경에서 데이터베이스에서 테이블을 생성하고 데이터를 삽입, 제거하는 과정을 알아보겠습니다. SQ.. nodejs에서 웹소켓 기능 구현하기 1. 개요 서버 - 유저 실시간 양방향 통신 가능 2. 설치 npm install socket.io 소켓 라이브러리 설치 // 소켓 사용 설정 const http = require('http').createServer(app); const {server} = require('socket.io'); const io = new Server(http); server.js파일에 위 설정 추가 http.listen(process.env.PORT, function () { console.log("db connected"); }); 원래 app.listen이었는데 http.listen으로 바꿔주기 3. 코드 (1) socket.ejs socket.ejs파일 만들기 채팅방 서버에 메시지 보내기 body태그에 위 코드들.. nodejs로 실시간 채팅 기능 만들기 1. 개요 실시간으로 DB데이터를 가져오는 방법을 알아야 함 2. 알고리즘 서버랑 유저랑 실시간 소통채널(Server Sent Events)을 열어야 함 서버가 유저에게 일방적으로 데이터 실시간 전송 가능 HTTP 요청시 몰래 전달되는 정보들이 있음(유저의 언어, 브라우저 정보, 쿠키, 위치정보 등) 이런 정보는 Header에 담겨있음 이 Header를 수정하면 서버와 유저간 실시간 소통 창구 열 수 있음 MongoDB Change Stream이란거 쓰면 DB가 업데이트될때마다 유저에게 데이터 쏴줄 수 있음 3. 코드 (1) server.js // 서버-유저 실시간 소통 코드 app.get("/message/:id", 로그인했니, function (req, res) { // Header 셋팅 res.wr.. nodejs로 채팅방 기능 만들기 1. 개요 게시글 간의 종속관계를 알아야 함 채팅기능 = 댓글기능 + 실시간 통신임 채팅방에 접속 후 메시지 전송 게시글에 접속 후 댓글을 달기 2. 알고리즘 채팅과 유사한 댓글기능에는 댓글 게시글에 부모 게시물이 뭔지도 기록되어 있어야 함 = document끼리 종속 관계 맺는 방법임 채팅 기능 버튼 누르면 채팅방 게시물 발행 댓글(메시지) 게시물 남길 수 있게 하면 됨 이때 댓글에는 부모 게시물이 뭔지를 알아야 함 3. 코드 (1) chat.ejs 채팅 페이지 만들기 ! 채팅방1 내용 채팅방1 내용 채팅방1 내용 전송 (2) server.js 요청받은 URL을 통해 데이터를 DB에 저장 // 채팅 기능 코드 app.post("/chatNow", 로그인했니, function (req, res) { //.. nodejs에서 routes폴더 이용해서 라우터 관리하기 1. 개요 라우터 여러개 생기면 관리 귀찮음 router 폴더에다가 JS파일로 라우터 들을 저장해놓을 수 있음 server.js에 JS파일 등록해서 쓰면 됨 2. 설정 server.js랑 같은 경로에 routes 폴더 만들기 routes 폴더 안에 JS파일 만들기 3. 코드 (1) server.js // 라우터 가져오는 코드 // app.use는 미들웨어 쓰는 코드 // 미들웨어는 요청과 응답 사이에 실행하는 코드 // URL없이 미들웨어 쓰면 모든 응답과 요청 사이에서 실행 // app.use('/', 미들웨어, function) 형태는 '/'요청왔을대 미들웨어 실행 app.use("/shop", require("./routes/shop")); shop.js라는 파일에다가 라우터 집어넣어둠 경로에 왜 .. nodejs에서 회원 게시판 기능 만들기 1. 개요 내가 쓴 글만 수정, 삭제할 수 있게 변경 2. 코드 (1) 글 작성할때 작성자 정보 저장하는 코드 // POST요청을 처리하는 소스 app.post("/add", function (req, res) { res.send("전송완료"); console.log(req.body.title); console.log(req.body.date); // HTML에서 제목과 날짜 불러와서 변수에 저장 var title = req.body.title; var date = req.body.date; // user의 id를 불러와서 변수에 저장 var user = req.user._id; // counter라는 collection에서 데이터 가져오는 코드 // 게시물갯수 라는 이름의 데이터를 찾아서 가져옴 db... nodejs랑 mongodb에서 검색 기능 최적화하기(2) 1. 개요 text-index를 만들어두면 검색이 쉬워짐 ‘or’ 연산자나 ‘-’ 연산자 같은거 사용 가능 부분 검색어로 검색 가능 근데 text-index는 단점이 있음 단어 일부만 검색하면 검색이 안됨 mongodb는 띄어쓰기 기준으로 인덱싱 해주기 때문 2. Search Index 쓰기 mongodb atlas에서 search index 만들기 index Name 짓고 인덱스를 적용할 collection을 선택해야 함 [Refine Your Index]를 클릭하고, lucene.korean으로 변경합시다 그 밑에 있는 [Add Field Mapping]버튼을 눌르세여 Field Name은 제목으로 지정해주세여 3. 코드 // 검색 기능 app.get("/search", (요청, 응답) => { //.. nodejs랑 mongodb에서 검색 기능 최적화하기(1) 1. 개요 검색할 데이터가 너무 많으면 검색하기 어려움 indexing이 되어있는 데이터에는 binary search 개념을 도입할 수 있음 binary search는 이진탐색인데 검색할 데이터가 정렬되어있어야 함 indexing은 데이터를 정렬하는 행위 몽고DB에서는 오름차순으로 정렬되어 있는 _id를 이용해서 검색하면 binary search 가능 mongoDB atlas에서 인덱싱 할 수 있음 인덱싱 해둔 데이터를 검색하면 부분 검색어로도 검색 가능 2. MongoDB Atlas에서 인덱싱하기 인덱싱 하고싶은 collection에 접속 후 Indexes탭으로 들어감 [Create Index]버튼을 눌러줌 이렇게 제목을 text 순으로 정렬해준다 3. 코드 (1) server.js // 검색 기능 a.. 이전 1 2 3 다음