>웹 프론트엔드 >JS 튜토리얼 >Mongoskin을 사용하여 Node.js_node.js에서 mongoDB 인스턴스 운영

Mongoskin을 사용하여 Node.js_node.js에서 mongoDB 인스턴스 운영

WBOY
WBOY원래의
2016-05-16 16:35:101655검색

1. 말도 안되는 소리

2013년 1월부터 개발을 위해 mongodb를 접하게 되었고 여행 태그 서비스, Weibo 태그 검색 시스템, 지도 서비스, 웹 APP 서비스를 개발하게 되었습니다... MongoDB를 사용하는 시나리오는 .NET 및 JAVA 환경에서 옮겨왔습니다. node.js 플랫폼으로. Node.js와 mongodb의 조합이 매우 좋다고 느껴질수록요. mongodb와 node.js가 자연스럽게 일치하는 것 같습니다. 실제로 mongodb의 클라이언트는 JS의 구문 분석 엔진입니다. 따라서 제품 프로토타입으로 mongodb와 node.js를 선택하는 것도 매우 좋은 선택입니다. 인터넷에서 mongodb 개발에 어떤 드라이버가 가장 좋은지 묻는 네티즌들을 만났습니다. 예전에는 항상 네이티브 드라이버를 사용해왔지만 연결 종료 작업 등 코드를 작성할 때 주의해야 할 사항이 많습니다. .. 따라서 node.js에서는 개발 환경에서는 mongoskin을 사용하는 것을 권장합니다.

2. 논의해야 할 몇 가지 개념

(1) 데이터베이스: 관계형 데이터베이스와 동일합니다.
(2) 세트: 관계형 데이터베이스의 테이블입니다.
(3) 문서: 관계형 데이터베이스의 레코드와 유사하며 실제로는 JSON 개체입니다.
(4) 데이터베이스 설계: NoSQL 설계를 고려하고 관계형 데이터의 설계 아이디어를 포기하는 것이 좋습니다. 실제로 NoSQL 데이터베이스 설계는 광범위하고 심오하며 프로젝트에서 지속적으로 실행되어야 합니다.
(5) 사용자 시스템: 각 데이터베이스에는 다음을 수행할 수 있는 자체 관리자가 있습니다.

코드 복사 코드는 다음과 같습니다.

db.addUser('root_1' , 'test');
사용

(7) 외부 포트 변경을 권장합니다
(8) 서비스를 시작합니다(win 아래에 있으며 Linux에서는 약간 수정됨).
코드 복사 코드는 다음과 같습니다.

mongod --dbpath "XXMongoDBdatadb" --logpath "XXMongoDBlogmongo.log" --logappend -auth --port 7868

3. mongodb 개발 인프라 구축

(0) npm install mongoskin 설치 mongoskin

Node.js 설치, 패키지 및 기타 메커니즘은 여기서 소개하지 않습니다.

(1) 구성 파일 config.json을 생성합니다

코드 복사 코드는 다음과 같습니다.

{
"dbname":"테스트",
"포트": "7868",
"호스트": "127.0.0.1",
"사용자 이름": "테스트",
"password": "테스트"
}

(2) util 관련 클래스 mongo.js 생성: DB 객체 내보내기

코드 복사 코드는 다음과 같습니다.

var mongoskin = require('mongoskin'),
config = require('./../config.json');

/*
* @des: 데이터베이스 연결 모듈 내보내기
* */
module.exports = (함수(){
var 호스트 = config.host,
         포트 = config.port,
        dbName = config.dbname,
         userName = config.username,
비밀번호 = config.password,
           str = 'mongodb://' userName ':' 비밀번호 '@' 호스트 ':' 포트 '/' dbName;

var 옵션 = {
         Native_parser: true
};

mongoskin.db(str, option)을 반환합니다.
})();

(3) CRUD 기본 클래스 구축: 반복되는 CURD 코드를 줄이기 위해 해당 JSON 객체만 전달하면 됩니다

코드 복사 코드는 다음과 같습니다.

var db = require('./mongo.js'),
상태 = require('./status'),
몽고스킨 = require('몽고스킨');


var CRUD = 함수(컬렉션){
This.collection = 컬렉션;
db.bind(this.collection);
};

CRUD.prototype = {
/*
* @des: 기록 생성
* @model: 삽입된 레코드, JSON 형식의 모델
* @callback: 콜백, 성공적으로 삽입된 레코드 또는 실패 정보를 반환합니다
*
* */
생성: 함수(모델, 콜백){
        db[this.collection].save(모델, 함수(err, 항목){
               if(err) {
                    콜백 반환(status.fail);
            }
Item.status = status.success.status;
Item.message = status.success.message;
              콜백(항목) 반환;
        });
},

/*
* @des: 기록 읽기
* @query: 쿼리 조건, Mongo 쿼리용 JSON 리터럴
* @callback : 콜백, 요구사항을 만족하는 레코드나 실패정보를 반환
*
* */
읽기: 함수(쿼리, 콜백){
        db[this.collection].find(query).toArray(function(err, items){
               if(err){
                    콜백 반환(status.fail);
            }
            var obj = {
상태: status.success.status,
                     메시지: status.success.message,
아이템:아이템
            };

콜백 반환(obj);
        });
},
/*
* @des: 기록 업데이트
* @query: 쿼리 조건, Mongo 쿼리의 JSON 리터럴, 여기에는 _id
* @updateModel: 업데이트가 필요한 JSON 형식의 모델
* @callback: 성공 또는 실패 정보를 반환합니다
*
* */
업데이트: 함수(query, updateModel, 콜백){
        var set = {set: updateModel};
        db[this.collection].update(query, set, function(err){
               if(err){
                    콜백 반환(status.fail);
               }그밖에{
                  콜백 반환(status.success);
            }
        });
},

/*
* @des: 기록 삭제
* @query: 쿼리 조건, Mongo 쿼리용 JSON 리터럴
* @callback: 실패 또는 성공 정보 반환
*
* */
​ deleteData: 함수(쿼리, 콜백){
        db[this.collection].remove(query, function(err){
               if(err){
                    콜백 반환(status.fail);
            }
              콜백 반환(status.success);
        });
}
};


module.exports = CRUD;

(4) 성공과 실패를 나타내기 위해 일부 상태가 필요하기 때문에 status.json을 빌드합니다. 확인 코드 오류, SMS 확인 오류, 사용자 이름 오류 등을 포함하도록 확장할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

module.exports = {
/*
*성공상태
*
* */
성공: {
상태: 1,
          메시지: '확인'
},

/*
* 실패상태
*
* */
​​실패: {
상태: 0,
          메시지: '실패'
},

/*
* 두 번 입력한 비밀번호가 일치하지 않습니다
* */
반복 비밀번호: {
상태: 0,
​​​​​ 메시지: '두 번 입력한 비밀번호가 일치하지 않습니다.'
}
};

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.