我正在我的第一個NodeJS應用程序,這基本上只是使用MongoDB(託管在MongoHQ)數據庫的寧靜的Web服務。nodejs mongoose數據庫訪問隨機does not'返回結果
我使用Express和Mongoose來協助路由和數據庫訪問,並且它似乎在大多數情況下都能正常工作,但是隨機我會遇到一個問題,那就是我寫入的一箇中間件方法訪問數據庫開始,並調用貓鼬查找,但它從來沒有得到一個響應,並最終http請求超時。
背景知識,我正在處理的域對象被稱爲'護衛隊'它有一個車船代碼是它的標識符,我試圖在此基礎上查找它。
這裏是方法
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方法看起來像:
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);
不,應該管那麼多了。大部分時間一切正常,但似乎是當我離開我的服務器運行一段時間而沒有使用它時,我回來了,直到重新啓動它纔會連接。
這裏的控制檯日誌:
ID 57C18326-7EBB-5A99-88BD-D34E9F108D98試圖更新康宏ZX12 用戶B在ZX12 更新了自己的位置找到康宏ZX12 找到康宏ZX12
你可以看到最後2個發現Convoy ZX12是我試圖調用該方法的兩次,在此之前的所有內容都是來自上個小時前發送的請求的日誌。
無論我嘗試重新連接多少次都不起作用。有沒有人有任何想法,它可能是什麼?