일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Menu
- 옵션메뉴꾸미기
- itemBackground
- Redux
- 메뉴클릭
- toolkit
- readAsDataURL
- hoos
- custom
- Android
- 자바스크립트
- bottomNav
- 안드로이드
- 커스텀옵션메뉴
- Hooks
- JavaScript
- 팝업메뉴 꾸미기
- ContextAPI
- nodejs
- Node
- framework
- redux/toolkit
- Dialog
- 코틀린
- JS
- 팝업메뉴
- javaSrcript
- react
- state_checked
- 리액트
- Today
- Total
대기업을 향한 디벨롭 블로그
fs 사용해서 JSON에 데이터 저장하기 본문
nodejs로 서버를 만들면서 DB가 아닌 JSON파일에 데이터를 저장해볼거다.
일단 기본적인 셋팅을 해주겠다.
// index.js
const express = require('express');
const app = express();
app.listen(5001 , ()=>{
console.log('sercer oON ');
})
정말 간단하게 fs를 테스트 해볼거라 express를 가져와 서버를 5001번 포트에 열어준다.
그리고
const fs = require('fs');
fs를 불러와준다. fs는 FileSystem의 약자이다. File의 관련된 모듈이라고 생각하면된다.
그리고 data.json파일을 폴더에 추가해주자.
//data.json
{
"name" : "mang",
"age" : "23"
}
data.json에 간단한 데이터를 넣어주었다. 이 데이터를 이제 읽어서 콘솔에 출력해보자.
fs.readFile('./data.json' , (err ,result)=>{
if(err) return
result = JSON.parse(result);
console.log(result);
})
여기서 나는 readFileSync가 아닌 readFile을 사용했다 readFileSync은 동기식으로 사용할 수 있다. 그러므로 때와맞게 사용하면 될거 같다. 그리고 require('fs').promises 를 붙혀서 불러올 수 있다.
코드를 설명해보겠다.
readFile함수에 첫번째 인자로 파일의 위치를 넣어주고 , 두번째로는 콜백함수를 넣어준는데 인자로 err 와 result를 받아줬다. 파일읽기에 실패하면 err가 들어와 return되고 , 성공했다면 result에 데이터가 담긴다.
여기서 데이터가 담길때 원래 Buffer형식으로 담기는데 JSON.parse함수를 이용해서 데이터파싱을 해준것이다. 그다음 출력을 보면
이렇게 데이터가 객체로 잘 출력되었다.
그다음 데이터를 수정해보자.
writeFile메서드를 사용해서 json파일의 데이터를 바꾸어보겠다. 여기서 중요한점은 데이터가 통째로 바뀐다는 점이다. writeFile를 이용해서 데이터를 집어넣으면 기존에있던데이터는 없어지고 새로넣는 데이터만 남는다. 그러므로 readFile로 먼저 데이터를 불러와서 그데이터를 조작하여 다시 writeFile메서드로 집어넣어주면 된다.
// index.js
const data = JSON.parse(fs.readFileSync('./data.json'));
data.name = "kim"
data.age = '30'
fs.writeFileSync('./data.json' ,JSON.stringify(data));
코드를 설명해보겠다.
Sync를 붙혀 동기식으로 만들었다. readFileSync에서 데이터를 불러와 바로 JSON.parse를 사용해서 파싱해준다. 그런다음 데이터를 수정해준다. 그리고 writeFileSync메서드를 사용하여 ./data.json 에다가 data를 삽입해주는데 저 데이터는 타입이 객체형태이기 때문에 JSON.stringify로 문자열형태로 바꿔서 json에 들어가줘야한다.
데이터가 잘 바뀌었다. 이렇게 간단하게 fs를 알아보았고 , json파일에 데이터도 저장하고 수정하고 출력하고 해보았다. fs을 알게되어서 응용할때가 은근 많은거같다.
그리고 promises API도 사용할 수 있다. 공식문서를 하나 첨부하고 끝내겠다.
https://nodejs.org/docs/latest-v16.x/api/fs.html#promises-api
File system | Node.js v16.17.0 Documentation
nodejs.org
'Node.js' 카테고리의 다른 글
bcrypt 비밀번호 암호화하기 (mongoose pre함수) (0) | 2022.09.14 |
---|---|
nodemailer를 사용하여 이메일 인증 구현하기 - SMTP , TLS (0) | 2022.09.13 |
body-parser 모듈에 대하여... (0) | 2022.02.27 |
response 종류를 다루는..(쓰는족족넣어보자) (0) | 2022.02.27 |
3장 /GET요청에 대하여..(프론트엔드에서 주문들어왔습니다~) (0) | 2022.02.27 |