본문 바로가기
Programming/Node.js

Node.js에서 JSON 데이터 추가하는 방법(readFileSync, push, writeFileSync)

by 혀코 2020. 1. 2.

안녕하세요. 혀코입니다.

오늘은 Node.js에서 JSON 데이터를 추가하는 방법에 대해서 알아보겠습니다.

app.js 를 다음과 같이 작성합니다.

const yargs = require('yargs')
const notes = require('./notes.js')

// Customize yargs version
yargs.version('1.1.0')

// Create add command
yargs.command({
    command: 'add',
    describe: 'Add a new note',
    builder: {
        title: {
            describe: 'Note title',
            demandOption: true,
            type: 'string'
        },
        body: {
            describe: 'Note body',
            demandOption: true,
            type: 'string'
        }
    },
    handler: function (argv) {
        notes.addNote(argv.title, argv.body)
    }
})

yargs.command({ 
    command: 'remove', 
    describe: 'Remove a thing', 
    handler: function() { 
        console.log('Removing the thing') 
    } 
}) 

yargs.command({ 
    command: 'list', 
    describe: 'List a thing', 
    handler: function() { 
        console.log('Listing the thing') 
    } 
}) 

yargs.command({ 
    command: 'read', 
    describe: 'Read a thing', 
    handler: function() { 
        console.log('Reading the thing') 
    } 
}) 

yargs.parse()

 

notes.js 를 다음과 같이 작성합니다.

const fs = require('fs')

const getNotes = function () {
    return 'Your notes...'
}

const addNote = function (title, body) {
    const notes = loadNotes()

    const duplicateNotes = notes.filter(function(note){
        return note.title === title
    })

    if (duplicateNotes.length === 0) {
        notes.push({
            title: title,
            body: body
        })
        saveNote(notes)
        console.log('New note added!')
    } else {
        console.log('Note title taken')
    }

}

const saveNote = function (notes) {
    const dataJSON = JSON.stringify(notes)
    fs.writeFileSync('notes.json',dataJSON)
}

const loadNotes = function () {
    try {
        const dataBuffer = fs.readFileSync('notes.json')
        const dataJSON = dataBuffer.toString()
        return JSON.parse(dataJSON)
    } catch (e) {
        return []
    }
}

module.exports = {
    getNotes: getNotes,
    addNote: addNote
}

 

이렇게 작성한 다음, 다음 명령어를 실행해서 확인해 보겠습니다.

$ node app.js add --title="today" --body="today is the day"

그러면, 다음과 같이 notes.json 파일이 생성된 것을 확인할 수 있습니다.

[{"title":"today","body":"today is the day"}]

 

동일한 명령어로 재실행을 한다면, title 값이 동일하기 때문에 'Note title taken'이라고 표시 되고 json 파일은 업데이트 되지 않은 것을 확인할 수 있습니다.

 

이렇게 Node.js에서 JSON 데이터를 추가하는 방법에 대해서 알아보았습니다.

유용하셨다면, 공감과 구독 부탁 드립니다.

감사합니다.

댓글