파일 읽기 및 쓰기
- jsonfile:
jsonfile
은 JSON 파일을 쉽게 읽고 쓸 수 있는 기능을 제공합니다. 파일을 읽을 때는jsonfile.readFile
메서드를 사용하고, 파일에 데이터를 쓸 때는jsonfile.writeFile
메서드를 사용합니다. 이 라이브러리는 비동기 및 동기 방식 모두를 지원하여, 필요에 따라 적절한 방법을 선택할 수 있습니다. - write-json-file:
write-json-file
은 JSON 데이터를 파일에 쓰는 데 특화된 라이브러리로,writeJson
함수를 사용하여 데이터를 파일에 저장합니다. 이 함수는 파일이 존재하지 않을 경우 자동으로 생성하며, 기존 파일을 덮어쓰거나 추가할 수 있는 옵션을 제공합니다. - lowdb:
lowdb
는 JSON 파일을 데이터베이스처럼 사용하여 데이터를 읽고 쓸 수 있습니다. 데이터베이스 인스턴스를 생성한 후, 간단한 키-값 쌍으로 데이터를 저장하고, 필요에 따라 데이터를 조회, 수정, 삭제할 수 있습니다. 데이터는 자동으로 파일에 저장되므로, 별도의 파일 쓰기 작업이 필요 없습니다.
데이터 구조
- jsonfile:
jsonfile
은 JSON 형식의 데이터를 읽고 쓰는 데 중점을 두고 있으며, 데이터 구조에 대한 제한이 없습니다. 사용자가 원하는 형태의 JSON 데이터를 자유롭게 처리할 수 있습니다. - write-json-file:
write-json-file
은 JSON 데이터를 파일에 쓰는 데 중점을 두고 있으며, 데이터 구조에 대한 제한이 없습니다. 사용자가 원하는 형태의 JSON 데이터를 자유롭게 파일에 저장할 수 있습니다. - lowdb:
lowdb
는 JSON 파일을 데이터베이스처럼 사용하므로, 데이터는 키-값 쌍 형태로 저장됩니다. 복잡한 데이터 구조도 지원하지만, 기본적으로 간단한 객체, 배열, 중첩 객체 등을 사용하여 데이터를 구성합니다.
비동기 지원
- jsonfile:
jsonfile
은 비동기 및 동기 방식 모두를 지원합니다. 비동기 방식은 콜백 함수 또는 프로미스를 사용하여 파일 읽기 및 쓰기 작업을 수행할 수 있으며, 동기 방식은readFileSync
및writeFileSync
메서드를 사용하여 블로킹 방식으로 작업을 수행합니다. - write-json-file:
write-json-file
은 비동기 방식으로 파일에 데이터를 쓰는 기능을 제공합니다.writeJson
함수는 프로미스를 반환하므로,async/await
구문이나.then()
메서드를 사용하여 비동기 작업을 처리할 수 있습니다. - lowdb:
lowdb
는 비동기 작업을 기본적으로 지원하지 않지만, 데이터베이스 인스턴스를 생성하고 데이터를 읽고 쓰는 작업은 동기적으로 수행됩니다. 비동기 작업이 필요한 경우, 외부 라이브러리와 함께 사용하여 비동기 처리를 구현할 수 있습니다.
스트리밍 지원
- jsonfile:
jsonfile
은 스트리밍 방식으로 파일을 읽고 쓰는 기능을 제공하지 않습니다. 파일을 한 번에 읽고 쓰는 방식으로 동작하며, 대용량 파일 처리 시 메모리 사용에 주의해야 합니다. - write-json-file:
write-json-file
은 스트리밍 방식으로 데이터를 파일에 쓰는 기능을 지원합니다.writeJson
함수는 스트리밍 방식으로 데이터를 처리할 수 있어, 대용량 데이터를 효율적으로 파일에 저장할 수 있습니다. - lowdb:
lowdb
는 스트리밍 방식으로 데이터를 처리하지 않지만, 데이터가 메모리에 로드되고 변경 사항이 파일에 자동으로 저장됩니다. 대용량 데이터를 처리할 경우, 메모리 사용량에 유의해야 합니다.
예제 코드
- jsonfile:
JSON 파일 읽기 및 쓰기 예제
const jsonfile = require('jsonfile'); const file = 'data.json'; // JSON 파일에 데이터 쓰기 const data = { name: 'Alice', age: 30 }; jsonfile.writeFile(file, data) .then(() => console.log('데이터가 파일에 저장되었습니다.')) .catch(err => console.error(err)); // JSON 파일에서 데이터 읽기 jsonfile.readFile(file) .then(data => console.log('파일에서 읽은 데이터:', data)) .catch(err => console.error(err));
- write-json-file:
JSON 데이터를 파일에 쓰기 예제
const { writeJson } = require('write-json-file'); const file = 'data.json'; const data = { name: 'Bob', age: 25 }; // JSON 데이터를 파일에 쓰기 writeJson(file, data) .then(() => console.log('데이터가 파일에 저장되었습니다.')) .catch(err => console.error(err));
- lowdb:
LowDB를 사용한 간단한 CRUD 예제
const { Low, JSONFile } = require('lowdb'); const file = 'db.json'; const adapter = new JSONFile(file); const db = new Low(adapter); // 데이터베이스 초기화 async function init() { await db.read(); db.data ||= { users: [] }; // 데이터가 없으면 초기화 await db.write(); } // 사용자 추가 async function addUser(name) { db.data.users.push({ name }); await db.write(); console.log(`사용자 추가: ${name}`); } // 사용자 목록 조회 async function listUsers() { await db.read(); console.log('사용자 목록:', db.data.users); } // 초기화 및 예제 실행 init().then(() => { addUser('Alice'); addUser('Bob'); listUsers(); });