2011-06-13 3 views
1

MongoDB (호스팅 된 MongoHQ) 데이터베이스를 사용하는 기본적으로 안정된 웹 서비스 인 첫 번째 NodeJS 응용 프로그램에서 작업하고 있습니다.nodejs mongoose 데이터베이스에 무작위로 액세스하지 못했습니다. 결과를 반환하십시오.

나는 라우팅과 데이터베이스 액세스를 돕기 위해 익스프레스와 몽구스를 사용하고 있으며, 대부분의 경우에는 잘 작동하는 것처럼 보입니다.하지만 필자가 작성한 미들웨어 메소드 중 하나가 무작위로 나옵니다. 데이터베이스에 액세스하여 시작하고 몽구스 조회를 호출하지만 응답을 얻지 못하고 결국 HTTP 요청이 시간 초과됩니다.

배경 지식, 내가 다루고있는 내 도메인 객체는 '호송'이라고 불리우며 convoyCode는 식별자로, 이것을 기반으로 검색하려고합니다.

app.post("/JoinConvoy", findConvoy, function(request, response){ 
    //stuff here 

    } 

내 데이터베이스 모델이 훨씬 중요해야

var Convoy = new mongoose.Schema({ 

     name: String 
    , creator: String 
    , startDate: Date 
    , destinationLat: Number 
    , destinationLong: Number 
    , currentLocations: [Locations] 

}); 

//get the model 
var Model = mongoose.model('Convoy', Convoy); 

되지 않습니다 : 같은

여기에 방법을

function findConvoy(request, response, next){ 
    var convoyCode; 

    if (request.method == 'GET'){ 
     var _url = url.parse(request.url); 
     var queryString = qs.parse(_url.query); 
     convoyCode = queryString.ConvoyCode; 
    } else { 
     convoyCode = request.body.ConvoyCode; 
    } 

    console.log("Finding Convoy " + convoyCode); 

    Model.findOne({ name:convoyCode}, function(err, convoy){ 
      if (err){ 
       console.log("Error finding convoy " + err); 
            response.send('ERROR FINDING CONVOY', 500); 

      } 
      if (convoy){ 
       request.ReturnedConvoy = convoy; 
        console.log("Found Convoy " + convoyCode); 
       next(); 
      } else { 
       console.log("Convoy not found."); 
       response.send('CONVOY NOT FOUND', 404); 
      } 
    }); 
} 

POST 메서드가 호출되는 모습이다. 모든 것이 완벽하게 작동하지만 대부분 서버를 사용하지 않고 서버를 그대로두면 다시 부팅 할 때까지 연결되지 않습니다.

ID 57C18326-7EBB-5A99-88BD-D34E9F108D98 호송 ZX12 사용자 B가

당신이 할 수있는 호송 ZX12 찾기 호송 ZX12 찾기 ZX12 에 자신의 위치를 ​​업데이트 업데이트하려고 : 여기

은 콘솔 로그의 지난 2 회 Convoy ZX12를 찾는 방법을 두 번 봅니다. 그 방법을 호출하려고 시도했습니다. 그 전의 모든 것은 몇 시간 전에 보내진 마지막 요청의 로그입니다.

몇 번이나 다시 연결하려고해도 작동하지 않습니다. 누구나 될 수있는 것에 관해서 어떤 아이디어가 있습니까?

답변

0

시도 대신 의 퍼팅 보내 방법

function findConvoy(request, response, next){ 
    var convoyCode; 

    if (request.method == 'GET'){ 
    var _url = url.parse(request.url); 
    var queryString = qs.parse(_url.query); 
    convoyCode = queryString.ConvoyCode; 
    } else { 
    convoyCode = request.body.ConvoyCode; 


    console.log("Finding Convoy " + convoyCode); 

    Model.findOne({ name:convoyCode}, function(err, convoy){ 
     if (err){ 
      console.log("Error finding convoy " + err); 
           response.send('ERROR FINDING CONVOY', 500); 

     } 
     if (convoy){ 
      request.ReturnedConvoy = convoy; 
       console.log("Found Convoy " + convoyCode); 
      next(); 
     } else { 
      console.log("Convoy not found."); 
      // end instead on send  
      response.end('CONVOY NOT FOUND', 404); 

     } 
}); 
} 
관련 문제