Database2 - Lowdb

설치 - Node.js

수업소개

Node.js 환경에서 lowdb를 설치하는 방법을 소개합니다. 
 

 

 

강의

 

 

 

소스코드

main.js

const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('db.json')
const db = low(adapter)

 

댓글

댓글 본문
  1. Hyebin Yu
    안녕하세요! lowdb가 버전을 lowdb 3.0.0 로 업그레이드 하면서 lowdb1.0.0 버전으로 에디터에서 수업을 따라 코드를 실행하지못하여 저 또한 아래의 코멘트를 참조하여 수업에 참여 하였습니다. pure ESM 으로 수업을 진행하기 위해 lowdb를 설치한 후에 생성된 package.json에 아래의 코멘트에 적힌 코드를 복붙한 후, https://www.npmjs.com......의 Usage 부분의 코드 전체를 복붙하여 수업 따라 가다가, db를 찾아야 할 경우에는 아래에 적힌 코드만 main.js 에 추가하면 find함수 실행 가능 합니다. (아래 전체 코드)
    ~~~
    import { join, dirname } from 'path'
    import { Low, JSONFile } from 'lowdb'
    import { fileURLToPath } from 'url'
    import lodash from 'lodash' // find()함수를 사용하기 위해 추가할 코드

    const __dirname = dirname(fileURLToPath(import.meta.url));

    const file = join(__dirname, 'db.json')
    const adapter = new JSONFile(file)
    const db = new Low(adapter)


    await db.read()

    db.data ||= { topic: [], author: [] }

    db.data.author.push({
    id:1,
    name: 'egoing',
    profile: 'developer'
    });
    db.data.topic.push({
    id:1,
    title: 'lowdb',
    description: 'lowdb is..',
    author: 1
    });
    db.data.topic.push({
    id:2,
    title: 'mysql',
    description: 'mysql is..',
    author: 1
    });

    await db.write();

    db.chain = lodash.chain(db.data) // find()함수를 사용하기 위해 추가할 코드
    const post = db.chain
    .get('topic')
    .find({ id: 1 })
    .value()

    console.log(post); // find함수 실행 하면 터미널에 { id: 1, title: 'lowdb', description: 'lowdb is..', author: 1 }가 뜸
    ~~~
  2. Hyebin Yu
    너무 감사합니다! 헤매고 있었어요 ㅠㅠㅠ
    대화보기
    • 진또베티
      아래 댓글을 참고해서 ver 1.0.0으로 수업에 참여했습니다.
      version관련 document는 https://www.npmjs.com......wdb 에 접속해서 versions에가서 1.0.0을 click하면 수업과 동일한 내용으로 팔로우 할 수 있습니다.
    • 나연
      2022년 2월 28일 (월) 완료

      lowdb
      - JS를 통해서 동작되는 환경은 웹 브라우저에서도 가능하고, NodeJS에서도 가능하고, Electron이라고 해서 데스크탑 애플리케이션을 만드는 환경에서도 가능
      1. `$ npm install -s lowdb`
      - `-s` : 프로젝트에 lowdb를 쓰겠다는 기록이 남음

      - lowdb를 사용하기 위해서는 lowdb라는 모듈을 NodeJS에 설치해야 함
      - `FileSync`라고 되어있는 것은 lowdb를 통해서 데이터를 제어할 때 파일, 메모리, 브라우저의 로컬 스토리지에 저장할 수 있음
      -- 어떤 방식으로 데이터를 저장할 것인가에 따라 가져와야 할 모듈이 달라짐
      -- `FileSync`이라는 파일의 동기 방식으로 저장
      - `const adapter = new FileSync('db.json')`
      -- 데이터를 `db.json`이라는 파일에 JSON의 형식에 따라 저장
      - `const db = low(adapter)`
      -- `db.json` 파일에다가 동기 방식으로 저장하겠다는 것을 지정
      -- `db`라는 변수를 통해 lowdb를 제어할 수 있게 됨

      2. 실행
      `$ node <file-name>.js`

      -----
      Pure ESM 사용법 (출처 : 아래 댓글)

      lowdb 버전이 바뀌면서 위에 있는 코드로는 작동이 되지 않음
      Pure ESM을 사용해야 함
      Main.js가 있는폴더에 npm init을 하셔서 package.json을 만든 다음에
      {
      "type": "module",
      "name": "lowdb-basics",
      "version": "1.0.0",
      "description": "",
      "exports": "./index.js",
      "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "MIT"
      }로 내용을 수정한 다음에
      Main.js파일은 https://github.com......wdb 에있는 Usage에있는 걸 전부 복사해서 붙여넣기
      그리고 중간에 노드 버전에 따라 바뀌는 부분이 있음
      // db.data = db.data || { posts: [] } // Node < v15.x
      db.data ||= { posts: [] } // Node >= 15.x
      기본이 밑에 걸로 되어있는데 만약 실행했을 때 오류가 나면 밑에 거는 지우고 위에 걸로 함
    • StulAmi
      lowdb 버전이 바뀌면서 위에 있는 코드로는 작동이 되지않습니다
      Pure ESM을 사용해야합니다
      Main.js가 있는폴더에 npm init을 하셔서 package.json을 만들어주신다음에
      {
      "type": "module",
      "name": "lowdbpractice",
      "version": "1.0.0",
      "description": "",
      "exports": "./index.js",
      "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
      }로 내용을 수정한다음에
      Main.js파일은 https://github.com......wdb 에있는 Usage에있는 걸 전부 복사해서 붙여넣기합니다
      그리고 중간에 노드 버전에 따라 바뀌는 부분이 있습니다
      // db.data = db.data || { posts: [] } // Node < v15.x
      db.data ||= { posts: [] } // Node >= 15.x
      기본이 밑에걸로 되어있는데 만약 실행하셨을때 오류가 나면 밑에건 지우시고 위에걸로 하시면됩니다
    • hyeseong
      lowdb 버전이 바뀌어서 그대로 따라하면 ERR_REQUIRE_ESM 에러가 발생했습니다.
      대충 찾아보니 pure ESM package 관련 에러인 것 같은데 더 공부가 필요한 부분인듯 합니다.

      lowdb github를 보고 새 버전대로 따라해도 어찌 당장 에러가 해결되지 않아서
      npm install -s lowdb@1.0.0 명령어를 사용 해 이전 버전의 lowdb를 설치하여 일단 따라합니다.
      혹시 비슷한 어려움을 겪으 시는 분들에게 도움이 될까 하여 남깁니다.

      혹은 새 버전에서 같은 내용으로 따라하는 방법을 아시는 분이 계신다면 알려주시면 정말 감사하겠습니다 ㅠㅠ
    • labis98
      20210824 good!!!
    • 김윤석
      21.04.27
    • jeisyoon
      2021.03.27 Nodejs Lowdb - Start
    • chimhyangmoo
      21.03.08
    • 생활둘기
      2021 2 15
    • Yong Hyun Lee
      완료 200920
    • 착한얼굴에그러치모탄태도
      감사합니다
    • 쑤우
      수강완료. 감사합니다~
    • Amousk
      설치 완료!
    • supernet
      완료!!
    • 상구미
      Global 옵션은 저도 유명한 프레임워크들만 사용해요 express, react 등등..
      대화보기
      • 삼고잉
        일단 설치 완료
      • Hyung Jun Choi
        npm을 이용해서 설치해도 mudules폴더가 안생기네요..ㅠ
        ---------------------------------------------------------------------------------
        추가.
        npm을 이용해 모듈을 설치할 때, -s 옵션을 줘서 node_modules폴더가 생기도록 하시는 것이 좋습니다.
        저는 괜히 -g 옵션을 줘서 글로벌로 설치하려고 했는데, 글로벌 설치에 관한 오류가 많아서 이리저리 삽질하느라 고생만 했네요.
        결국 웬만하면 글로벌 설치는 포기하고 로컬설치를 하는 것이 좋습니다.
      • Robert Eric
        editor는 vs code 쓰고 계신 것 같네요.ㅎㅎ 저도 vs code 씁니다
        대화보기
        • 그린이
          혹시 무슨 에디터를 이용하신건가요??

          그리고 sublime text3를 에디터로, 일반 cmd창을 터미널로 이용해서 사용할 수 있나요?
        • hallo88
          굉장히 흥미로운 주제네요. 관계형 데이터베이스만 사용하다가 좋은 내용 알아 갑니다.