Seize the day

POST : Backend study

Mongo db / Deno / VisualStudio code 설치 (Study log)

모바일 앱의 싱크 서버가 필요해서, 백엔드를 구성하는 법을 공부하는 중. 

DB는 Mongo db를 사용하기로 결정했고,  서버의 주 작성 언어를 자바스크립트(node, deno)로 할지, 코틀린(spring boot)으로 할지에 따라서 프레임웍이 달라지는데 둘 다 공부해 보기로 했다.  일단 자바 스크립트로 하는 공부를 했고, Node로 할까하다가 Deno로 하고 여러가지 공부 로그를 남긴다. 

 

1. Mac에서 Mongo db 설치

GitHub - mongodb/homebrew-brew: The Official MongoDB Software Homebrew Tap

 

GitHub - mongodb/homebrew-brew: The Official MongoDB Software Homebrew Tap

The Official MongoDB Software Homebrew Tap. Contribute to mongodb/homebrew-brew development by creating an account on GitHub.

github.com

 

준비
$ brew update

설치
$ brew tap mongodb/brew

설치
$ brew install mongodb-community

버전 확인
$ mongod --version
db version v5.0.1
Build Info: {
    "version": "5.0.1",
    "gitVersion": "318fd9cabc59dc9651f3189b622af6e06ab6cd33",
    "modules": [],
    "allocator": "system",
    "environment": {
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

서버 시작
$ brew services start mongodb-community

쉘 접속
$ mongo

2. Deno 설치

Deno - A secure runtime for JavaScript and TypeScript

 

Deno - A secure runtime for JavaScript and TypeScript

Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

deno.land

$ brew install deno

$ deno --version
deno 1.12.2 (release, x86_64-apple-darwin)
v8 9.2.230.14
typescript 4.3.5

 

3. VisualStuiod Code 설치

Documentation for Visual Studio Code

 

Documentation for Visual Studio Code

Find out how to set-up and get the most from Visual Studio Code. Optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

deno plugin 설치

deno로 검색하여, 플러그인  id: denoland.vscode-deno  게시자: denoland 인 플러그인 설치.

 

4. Deno에서 Mongo db 접속하기

mongo@v0.24.0 | Deno 를 이용하기 (mongodb를 사용할 수 있는 여러 라이브러리가 있지만 스타가 많고 간단해보임)

에러 핸들링

Top-level 'await' expressions are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher.ts(1378)

>> Deno: VS Code typescript doesnt know ES6 - Stack Overflow 

tsconfig.json 작성하여 아래처럼 저장

{
    "compilerOptions": {
      "module": "ESNext",
      "target": "ES2020"
    }
  }

test.ts 작성

import { Bson, MongoClient } from "https://deno.land/x/mongo/mod.ts";

const client = new MongoClient();

//Connecting to a Local Database
await client.connect("mongodb://localhost:27017");

// Define collection
interface TSList {
    _id: { $oid: string };
    id: number
    name: string;
  }


const db = client.database("testdb");
const tslist = db.collection<TSList>("tslist");
const allTsList = await tslist.find().toArray()

console.log(allTsList)

실행하기

$ deno run --allow-net --unstable test.ts
[
  {
    _id: ObjectId2 {
      [Symbol(id)]: Buffer2(12) [
         97,   3, 176, 191, 205,
        221,  45, 143, 227, 133,
         14, 230
      ]
    },
    id: 1,
    name: "user"
  }
]

mongo 쉘에서 입력해 놓은 데이타를 제대로 불러왔다.

 

5. 파일 한개로 실행가능한 배포 파일 만들기

deno가 파일 한개로 배포가 가능하다고 하는데 가능한지 알아봤다. deno compile로 test라는 파일을 만들었는데 무려 72메가 용량이고, 실행하니 제대로 동작한다. deno가 설치되지 않은 곳에서도 실행이 되는지는 잘 모르겠다.

Compiling executables | Manual | Deno

$ deno compile  --allow-net --unstable test.ts
Check file:///Users/user/djkim/test/test.ts
Bundle file:///Users/user/djkim/test/test.ts
Compile file:///Users/user/djkim/test/test.ts
Emit test

$./test
[
  {
    _id: ObjectId2 {
      [Symbol(id)]: Buffer2(12) [
         97,   3, 176, 191, 205,
        221,  45, 143, 227, 133,
         14, 230
      ]
    },
    id: 1,
    name: "user"
  }
]

top

posted at

2021. 7. 30. 17:32


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크