2017-03-21 1 views
1

Node.js async 및 MongoDB에 대한 몇 가지 정보를 알고 싶습니다. 연결 전에 서버가 시작되고 템플릿 또는 Ajax가 데이터베이스의 데이터에 의존하면 (핸들 바를 미리 컴파일합니다) HTML 파일이 실패하거나 템플릿/Ajax가 연결을 기다렸다가 계속 진행할 것입니까?비동기 : 서버 시작 후 MongoDB에 연결

제대로 작동하는 경우 정확하게 작동하는 방식을 더 잘 이해하고 싶습니다. 이것이 실패하면 어떻게하면 "우아하게"고칠 수 있습니까?

가 게양을 사용하여 솔루션의 예입니다 (TBH 나에게 나쁜 것) :

//connect to db 
mongodb.connect("someDBplace", 
    (err, db)=>{ 
    if(err){ 
     return generalLogger.error(`The database has failed to connect: ${err}.`); 
    }else{ //start the server now: 
     generalLogger.info(`Connected to database: ${stringify(db.databaseName)}.`); 

server.listen(`${port}`, (err)=>{ 
    if(err){ 
     generalLogger.error(err); 
    } 
    //for demo: console th eMIMEtype 
    generalLogger.info(`The Server started on port: ${port}.`); 
}); 
    } 
}); 
+0

허 : 예를 들어 게요! 플러그인을 참조? 이 코드를 실행 해 보지 않으셨습니까? –

+0

그래, 그랬어. 잘 작동하는 데는 문제가 있지만 잘 모르겠다. 나는 또한 그것이 실패했는지 또는 성공했는지 또는 좋은 실행인지 아닌지를 알 수 없다. – Defaceo

+0

코드에서 서버가 실제로 데이터베이스 연결의 어떤 것을 사용합니까? 그 부분을 보여 주거나, 초기화가 끝나기 전에 어떤 일이 일어 났는지 알 수 없습니다. – Bergi

답변

1

예,이 그것을 할 올바른 방법입니다. 서버가 요청을 처리하기 전에 데이터베이스를 사용할 수 있는지 확인하려면 데이터베이스 연결 방법의 콜백에서 서버를 시작해야합니다.

Hapi와 같은 일부 고급 프레임 워크는 시작하기 전에 여러 가지 작업을 기다릴 필요가있는 경우를 단순화 할 수있는 메커니즘을 제공합니다.

+0

나는 이해하지만 DB에 의존하는 것들을로드하는 동안로드하는 것을 원합니다. 나는 그것을 이해하고 싶다. – Defaceo