도트 설치로 만든 채팅 서버의 값을 Mongobb에 저장
개요
평소에는 PHP 메인으로 시야가 좁아지기 쉽기 때문에, 전환을 위해 점 설치 Node.js 수업 로 채팅 서버를 작성했습니다.
이 상태에서 JS 파일을 다시 시작하면 데이터가 손실됩니다.
따라서 MongoDB를 사용하여 채팅 내용을 DB에 저장하고 다시 시작해도 데이터를 인계합니다.
Node.js의 도입이나 구문에 대해서는 언급하지 않으므로, 상기의 레슨을 기초로 도입해 주세요.
MongoDB 도입
MongoDB를 Node.js가 설치된 서버에 배포합니다.
도입은 아래의 순서로 실시합니다.
1. mongodb.repo 편집
/etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
2. yum 설치 실행
sudo yum -y install mongodb-org
3. MongoDB 시작
sudo service mongod start
sudo chkconfig mongod on
4. MongoDB Driver 설치
Node.js에서 MongoDB를 처리하기 위해 드라이버를 설치합니다.
드라이버는 MongoDB의 공식 드라이버 mongodb를 사용하거나 해당 객체 래퍼 라이브러리의 Mongoose가 있습니다.
이번에는 mongodb를 이용합니다.
npm install mongodb
이것으로 MongoDB의 도입이 완료됩니다.
Node.js + MongoDB
프로그램 내에서 도입한 드라이버를 읽어 MongoDB를 조작해 갑니다.
server.js
var MongoClient = require('mongodb');
(中略)
/**
* MongoDBからデータを取得する
*
* @param {string} id 取得対象のコレクション
*/
var getChatDetail = function (id, callback) {
MongoClient.connect('mongodb://' + setting.db_host + '/' + setting.db, function(err, db) {
if (err) {
return console.dir(err);
}
db.collection(setting.collection, function(err, collection) {
collection.find({}, {chat_data:1, _id : 0}).toArray(function(err, id){
callback(id);
});
});
db.close();
});
}
/**
* MongoDBにデータを格納する
*
* @param {string} id 取得対象のコレクション
* @param {array} posts 格納するチャット内容
*/
function savaChatDetail(id, posts) {
MongoClient.connect('mongodb://' + setting.db_host + '/' + setting.db, function(err, db) {
if (err) {
return console.dir(err);
}
var documentName = setting.document;
var params = {};
params[documentName] = posts;
getChatDetail(documentName, function (result) {
if (result.length !== 0
&& Object.keys(result['0']).length
) {
var updateTarget = {};
updateTarget[documentName] = result['0'][documentName];
db.collection(setting.collection, function(err, collection) {
collection.updateOne(updateTarget, {$set : params});
});
} else {
// 保険的な意味合いでDBに保存するので失敗しても無視
db.collection(setting.collection, function(err, collection) {
collection.insertOne(params);
});
}
db.close();
});
});
}
이것으로 MongoDB에 데이터 저장 및 검색 구현이 완료되었습니다.
실제로 브라우저에서 조작하면 아래와 같이 MongoDB 내에 데이터가 등록되었습니다.
db.chat.find();
{ "_id" : ObjectId("5a10453d92f6df2653fab4b7"), "chat_data" : [ "pop", "98" ] }
이제 server.js의 처리를 중지하고 다시 실행해도 데이터를 인계 할 수있었습니다.
Node.js와 MongoDB를 사용한 인상
처음으로 Node.js와 MongoDB를 사용하여 다음과 같은 점에 빠졌습니다.
주저하는 일도 있었습니다만, 평상시 사용한 적이 없는 언어+기술을 학습할 수 있어서 좋았습니다.
이번에 만든 코드는 여기으로 올렸습니다.
끝까지 읽어 주셔서 감사합니다.
참고 자료
htp://mongo db. 기주 b. 이오 / 그래서 - 몽고 db 나치 ゔ / 2.1 / 아피 /
h tps:// 퀵했다. 작은 m/이타가키 뻗어/있어 MS/아1519998
Reference
이 문제에 관하여(도트 설치로 만든 채팅 서버의 값을 Mongobb에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/juve_534/items/86ed805b0ff818b5cafb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)