Node.js 7

[NodeJS] MongoDB로 CRUD 작업하기

몽고DB는 Nosql(비관계형) 데이터베이스이다. 키-값 형태로 저장되며 SQL방식에 비해  더 유연하다.실제 프로젝트에서는 몽구스라는 편리한 프레임워크를 사용하는것을 추천한다.nodejs 테이블을 만들고 다음과 같이 컬렉션을 만들 수 있다.admin> use nodejsswitched to db nodejsnodejs> db.createCollection('users'){ ok: 1 }nodejs> db.createCollection('comments'){ ok: 1 }컬렉션에 JSON형태로 데이터가 저장된다.nodejs> db.users.insertOne({ name: 'min', age: 25, married: false, comment:'hello', createdAt: new Date() });..

Node.js 2025.02.21

[NodeJS] 라우터 분리하기

Express의 라우터 분리를 이용해보자. 프로젝트의 규모가 커질수록 매우 효과적이다.프로젝트 구조가 이런식으로 되어 있다고 해보자./my-app ├── server.js ├── routes │ ├── users.js │ ├── products.js ├── package.json └── node_modules우선 메인 server.js 이다. const userRoutes = require('./routes/users'): routes/users.js 파일을 불러와 userRoutes 변수에 저장 라우트 파일을 불러온 후, Expree에 등록해야 한다.이때 app.use(경로, 라우터)를 사용하여 특정 경로에 해당하는 라우터를 사용한다. app.use('/users', userRou..

Node.js 2025.02.17

[NodeJS] Express

npm install express@latest다음 명령어를 입력한다. 현재 디렉터리에 node_modules와 package.json이 생길것이다. const express = require('express');const app = express();app.get('/', (req, res) => { res.send('hello express');});app.listen(3000, () =>{ console.log('익스프레스 서버 실행');}); 다음 코드를 입력하고 터미널에서 node app 을 입력하여 express 서버를 실행해보자.이후 'localhost:3000'을 접속하면 서버가 정상적으로 작동하는것을 확인할 수 있다.이제 nodemon을 활용해보자포트를 3001로 지정해준후 n..

Node.js 2025.02.11

[NodeJS] HTTP 모듈로 서버 만들기(REST API)

노드는 서버가 아닌 서버를 실행시켜주는 엔진이다. 바로 만들어보자.const http = require('http');const server = http.createServer((req, res) => { res.write('I am Hungry'); res.write('Enough'); res.end('I am Hungry Enough');}) .listen(8080);server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중');});server.on('error', (error) => { console.error(error);})이제 localhost:8080을 접속해보자.서버를 만들어서 8080 포트에 프로세스를..

Node.js 2025.02.03

[NodeJS] 버퍼와 스트림

노드에서는 Buffer 객체를 사용할 수 있다.예를 들어 스트르밍할때, 100MB 파일을 1MB씩 나누어 보내면 수신측은 이 버퍼들을 다시 하나로 만들어줘야한다.아래는 concat을 이용하여 하나로 합쳐줬다.const buffer = Buffer.from('저를 버퍼로 바꿔보세요');console.log('from():', buffer);console.log('length:', buffer.length);console.log('toString():', buffer.toString());const array = [Buffer.from('스'), Buffer.from('벤'), Buffer.from('데')];const buffer2 = Buffer.concat(array);console.log('conca..

Node.js 2025.02.01

[NodeJS] 파일 시스템 접근하기(동기,비동기)

파일 시스템에 접근하는 모듈- 파일/폴더 생성, 삭제, 읽기, 쓰기 가능- 웹 브라우저에서는 제한적이었으나 노드는 권한을 갖고 있음. readme.txt라는 파일을 만들고 '읽기 파일' 이라는 텍스트를 저장해두자.이후 프로미시스 형식으로 파일을 읽으면 성공적으로 READ 완료write도 같은 방식으로 손쉽게할 수 있다.then을 사용하여 파일을 write(생성)한 이후에 바로 read까지비동기 방식으로 실행된다. 비동기-논블로킹 방식이 효율적이므로 순서를 잘 고려하자.fs는 동기, 비동기 모두를 지원한다. const fs = require('fs');let data = fs.readFileSync('./readme.txt');console.log(data.toString());이런식으로 뒤에 Sync만 ..

Node.js 2025.01.31

[NodeJS] worker_threads

노드에서는 멀티쓰레드 방식으로 작업할수 있다!isMainThread : 현재 코드가 메인 스레드에서 실행되는지, 워커 스레드에서 실행되는지 구분메인 스레드에서는 new Worker를 통해 현재 파일(_filename)을 워커 스레드에서 실행시킨다.worker.postMessage로 부모에서 워커로 데이터를 보낸다.parentPort.on('message')로 부모로부터 데이터를 받고, postMessage로 데이터를 보낸다.const { Worker, isMainThread, parentPort } = require('worker_threads');if (isMainThread) { // 메인 스레드 const worker = new Worker(__filename); worker.on('messa..

Node.js 2025.01.30