MongoSkin 의 Promise 스타일 을 기반 으로 한 NodeJS 읽 기와 쓰기 MongoDB.
(1) 데이터베이스 연결 파일: dbConfig
/**
* Created by apple on 2014/12/29.
*/
var mongoskin = require('mongoskin');
var db = null;
var dbName = "yqbChat";
/**
* @function
* @param collectionName
* @returns {SkinCollection|null|*}
*/
exports.getCollection = function (collectionName) {
if (!db) {
// mongodb , mongoskin.db('username:password@ ip/
db = mongoskin.db('mongodb://127.0.0.1:27017/' + dbName + '?auto_reconnect=true&poolSize=3',
{numberOfRetries: 1, retryMiliSeconds: 500, safe: true, native_parser: true},
{socketOptions: {timeout: 5000}}
);
}
return db.collection(collectionName);
};
/**
* @function
*/
exports.dbClose = function()
{
if (!db) {
db.close();
}
};
(2) Model 계층 파일
/**
* Created by apple on 2015/1/17.
*/
/**
*
* // ,
* @{singleChatRoomID}
* @_id
* @msgState 0- 1- (int )
* @msgContent
* @msgSend user_id
* @create_time
*
*/
// MongoDB
var moment = require('moment');
var Q = require("q");
//
var singleChatRoomConfigInstance = null;
//
var currentDateTime = moment().format("YYYY-M-D H:m:s");
/**
* @function singleChatRoomID singleChatRoomConfig
* @param singleChatRoomID ID
* @param callback promise
* @param promise promise, callback
*/
exports.findSingleChatRoomByID = function (data) {
// singleChatRoomID , , false
if (singleChatRoomConfigInstance == null) {
singleChatRoomConfigInstance = data.db.getCollection('singleChatRoomConfig');
}
var deferred = Q.defer();
console.log("[SingleChatRoomConfig->findSingleChatRoomByID]: ID !");
//
singleChatRoomConfigInstance.findOne({singleChatRoomID: data.singleChatRoomID}, function (error, result) {
if (typeof data.promise != undefined) {
if (!error) {
data.result = result;
//console.log(data);
deferred.resolve(data);
} else {
deferred.reject(error);
}
}
else {
callback(error, data);
}
//db.dbClose();
});
return deferred.promise;
};
/**
* @function
* @param singleChatRoomID
* @param user_id_1
* @param user_id_2
* @param callback
* @param promise
*/
exports.insertSingleChatRoomByID = function (data) {
// singleChatRoomID , , false
if (singleChatRoomConfigInstance == null) {
singleChatRoomConfigInstance = data.db.getCollection('singleChatRoomConfig');
}
var deferred = Q.defer();
console.log("[SingleChatRoomConfig->insertSingleChatRoomByID]: !");
//console.log(data);
singleChatRoomConfigInstance.insert(
{
singleChatRoomID: data.singleChatRoomID,
users: [data.user_id_1, data.user_id_2],
msgCount: 0,
createTime: currentDateTime
}, function (error, result) {
if (typeof data.promise != undefined) {
if (!error) {
data.result = result;
deferred.resolve(data);
} else {
deferred.reject(error);
}
//db.dbClose();
}
else {
callback(error, result);
//db.dbClose();
}
}
);
return deferred.promise;
};
(3) 테스트 파일
/**
* Created by apple on 2015/1/17.
*/
var singleRoomConfigModel = require('../SingleRoomConfigModel');
var model = require('../Model');
var db = require('../db/dbConfig');
var Q = require("q");
/**
* @function singleChatRoomConfig ,
* @param singleChatRoomID
*/
/**CallBack */
function testFindAndInsertByID_CALLBACK(singleChatRoomID) {
//
this.findSingleChatRoomByIDCallBack = function (error, result) {
console.dir("findSingleChatRoomByIDCallBack invoked!" + result);
// ,
if (result != null) {
}
else
// ,
{
singleRoomConfigModel.insertSingleChatRoomByID(singleChatRoomID, 1, 2, this.insertSingleChatRoomByIDCallBack);
}
};
//
this.insertSingleChatRoomByIDCallBack = function (error, result) {
if (error != null) {
console.log(result);
}
else {
console.error(error);
}
};
singleRoomConfigModel.findSingleChatRoomByID(singleChatRoomID, this.findSingleChatRoomByIDCallBack);
}
/**Promise */
function testFindAndInsertByID_PROMISE(singleChatRoomID) {
var data = {
singleChatRoomID: singleChatRoomID,
promise: true,
db:db
};
singleRoomConfigModel.findSingleChatRoomByID(data).then(
/**
* @function , ,
* @param result
*/
function (data) {
var deferred = Q.defer();
if(data) {
//console.log(" , !");
deferred.resolve(data);
}
else{
//console.log(" , !");
// promise
deferred.reject(data);
}
return deferred.promise;
}
, model.errorHandler
).then(
function(data){
//console.log(" !");
var deferred = Q.defer();
deferred.resolve(data);
return deferred.promise;
},
singleRoomConfigModel.insertSingleChatRoomByID
).done(
function(data){
//console.log("testFindAndInsertByID_PROMISE- ");
//console.log(data);
data.db.dbClose()
},
model.errorHandler
);
}
testFindAndInsertByID_PROMISE("1");
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.