MongoDB 데이터베이스 연결 유지
MongoDB를 사용하는 많은 입문 예제에서 다음과 같은 코드를 볼 수 있습니다.
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
MongoDB를은 다른 데이터베이스 시스템처럼, 경우 open
및 close
작업 시간이 많다는 일반적으로 비싸다.
그래서, 내 질문은 이것입니다 : MongoClient.connect("...
한 번만 수행하고 반환 된 db
값을 일부 모듈 전역에 할당하고 모듈의 다양한 기능이 다양한 데이터베이스 관련 작업을 수행하도록하는 것이 좋습니다 (문서를 컬렉션에 삽입, 문서 업데이트 등). ) 응용 프로그램의 다른 부분에서 호출 될 때 (따라서 해당 db
값 을 재사용 ) 응용 프로그램이 완료되면 close
.
즉, open
그리고 close
당신이 가서 일부 데이터베이스 관련 작업을 수행 할 필요가 없습니다 때마다 - 한 번 수행됩니다. 그리고 db
초기 open\connect
에서 반환 된 객체 를 계속 재사용 하고 close
, 데이터베이스 관련 작업을 모두 마쳤을 때 마지막에 폐기하기 위해서만 .
분명히 모든 I / O가 비동기이기 때문에 .NET close
을 실행하기 전에 마지막 데이터베이스 작업이 완료되었는지 확인해야합니다 close
. 이것이 괜찮을 것 같지만 MongoDB를 처음 접했기 때문에 뭔가 빠진 경우를 대비하여 다시 확인하고 싶었습니다. 감사!
예, 그것은 훌륭하고 전형적인 행동입니다. 앱을 시작하고, db에 연결하고, 오랫동안 db에 대해 작업을 수행하고, 연결이 예기치 않게 중단되면 다시 연결 한 다음 연결을 닫지 마십시오 (프로세스가 중단 될 때 발생하는 자동 닫기에 의존). .
mongodb 버전 ^ 3.1.8
약속으로 연결을 초기화하십시오.
const MongoClient = require('mongodb').MongoClient
const uri = 'mongodb://...'
const client = new MongoClient(uri)
const connection = client.connect() // initialized connection
그런 다음 데이터베이스에서 작업을 수행 할 때마다 연결을 호출합니다.
// if I want to insert into the database...
const connect = connection
connect.then(() => {
const doc = { id: 3 }
const db = client.db('database_name')
const coll = db.collection('collection_name')
coll.insertOne(doc, (err, result) => {
if(err) throw err
})
})
참고 URL : https://stackoverflow.com/questions/18650890/keeping-open-a-mongodb-database-connection
'IT Share you' 카테고리의 다른 글
Sublime Text 2가 닫는 괄호, 따옴표 및 괄호를 삼키는 것을 방지하는 방법은 무엇입니까? (0) | 2020.11.28 |
---|---|
unique_ptr을 할당하거나 재설정해야합니까? (0) | 2020.11.28 |
Crashlytics-빌드 / 버전을 어떻게 삭제하나요? (0) | 2020.11.28 |
App Store Connect 경고-잘못된 문서 구성 (0) | 2020.11.28 |
우편 번호에서 LatLng 가져 오기-Google Maps API (0) | 2020.11.27 |