2장 일어나달려가기

Book/노드JS와 몽고DB로 웹 개발 시작하기 2018. 12. 16. 18:25
반응형


노드JS와 몽고DB로 웹 개발 시작하기

스터디 

저작권에 문제가 있을시 비공개하겠습니다. 



1. 노드JS설치

2. 몽고DB설치

3. 설치검증



에디터 

맥 







노드JS설치 
윈도우 프로세서타입 알아내기 
wmic os get osarchitecture






노드JS설치 확인
node --version
npm --version



몽고DB설치 



c:\data\db 폴더가 생성됨 





C:\Program Files\MongoDB\Server\4.0\bin>mongod.exe 명령어 실행 






몽고DB설치 확인 
mongod --version
mongo --version



온라인 문서 


첫번째 앱 작성 

1. 폴더 생성     
mkdir testapp
cd testapp


2. 테스트 애플리케이션 작성 
npm init




3. 의존성 모듈 가져오기 

노드JS를 위한 네이티브 몽고DB클라이언트 
npm install mongodb --save



4. 디렉토리 목록 확인 하기 

node_modules라는 폴더 생성된 모습 
npm을 통해 설치 되는 모듛은 모두 이곳에 저장됨
package.json파일에 새로운 의존성이 입력되어 있는 모습 확인 할수 있음 



5. 애플리케이션 코드 추가 

로컬실행중인 몽고DB 앱에 접속해 몇가지 레코드를 시드 데이터(seed data)로 입력하고 데이터가 제대로 입력 됐는지 확인


app.js파일 생성 

코드 작성 

코드 순서

1. 몽고DB서버와 연결을 초기화 
2. db와의 연결이 성공적이었는지 여부에 따라 error나 db객체를 생성 
3. db객체를 사용해 chapters컬렉션을 얻어옴 
4. 컬렉션을 얻어온후 정의한 배열을 가지고 삽입 연산을 수행

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
31
32
33
34
35
36
37
38
39
40
41
42
43
//mongodb 모듈의 mongoClient를 요청 
var MongoClient = require('mongodb').MongoClient;
 
//mongodb환경 설정 
var connectionUrl = 'mongodb://localhost:27017/myproject';
var sampleCollection = 'chapters';
 
//myproject : 데이터베이스 
//chapters : 컬렉션 
 
//존재 하지 않는 컬렉션에 접근 하려고 할 경우 몽고DB가 자동으로 생성함 
 
//삽입할 데이터 정의 
var chapters = [
    {
        'Title''Snow Crash',
        'Author''Neal Stephenson'
    },
    {
        'Title''Snow Crash',
        'Author''Neal Stephenson'
    }
];
 
//몽고DB에 데이터를 삽입 
MongoClient.connect(connectionUrl, function(err, db){
    console.log("Connected correctly to server.");
    //컬렉션을 가져옴 
    var collection = db.collection(sampleCollection);
    collection.insert(chapters, function(err, result){
        //result : 삽입된 데이터 
        if(!err){
            console.log("Success: " + result.ops.length + " chapters inserted!");
        }
        else{
            console.log("Some error was encountered!");
        }
        db.close();
    });
});
 
 
 
cs

예제 애플리케이션 구동 

몽고DB데몬 인스턴스를 실행 
mongod




app.js파일 위치한 루트폴더로 이동후 명령어 실행
node app.js





버전에따라 조금 다른듯 






 In mongodb version >= 3.0, That database variable is actually the parent object of the object you are trying to access with database.collection('whatever'). To access the correct object, you need to reference your database name, for me that was by doing


참고: https://preamtree.tistory.com/109

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var MongoClient = require('mongodb').MongoClient;
var db; // 연결 받아올 변수(중요)
 
function connectDB() {
    var databaseUrl = 'mongodb://localhost:27017/local';
     
    MongoClient.connect(databaseUrl, function(err, database) {
        if(err) throw err;
         
        console.log('데이터베이스에 연결됨: '+databaseUrl);
        db = database.db('local'); /*database명을 명시했다.*/
    });
}</p>
 
 
cs












수정된 코드 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//mongodb 모듈의 mongoClient를 요청 
var MongoClient = require('mongodb').MongoClient;
 
//mongodb환경 설정 
var connectionUrl = 'mongodb://localhost:27017/myproject';
var sampleCollection = 'chapters';
 
//myproject : 데이터베이스 
//chapters : 컬렉션 
 
//존재 하지 않는 컬렉션에 접근 하려고 할 경우 몽고DB가 자동으로 생성함 
 
//삽입할 데이터 정의 
var chapters = [
    {
        'Title''Snow Crash',
        'Author''Neal Stephenson'
    },
    {
        'Title''Snow Crash',
        'Author''Neal Stephenson'
    }
];
 
//몽고DB에 데이터를 삽입 
MongoClient.connect(connectionUrl, { useNewUrlParser: true }, function(err, db){
    console.log("Connected correctly to server.");
    //컬렉션을 가져옴 
    var database = db.db('myproject');
    var collection = database.collection(sampleCollection);
    collection.insertMany(chapters, function(err, result){
        //result : 삽입된 데이터 
        if(!err){
            console.log("Success: " + result.ops.length + " chapters inserted!");
        }
        else{
            console.log("Some error was encountered!");
        }
        db.close();
    });
});
 
 
 
cs





데이터베이스 확인

$ mongo

> use myproject 

> show collections

> db.chapters.find().pretty()










반응형
: