Я работаю над своим первым приложением NodeJS, которое в основном представляет собой обычные веб-службы, использующие базу данных MongoDB (размещенную на MongoHQ).
Я использую Express и Mongoose, чтобы помочь с маршрутизацией и доступом к базе данных, и, кажется, большую часть времени это работает хорошо, однако случайно я получаю проблему, когда один из моих методов промежуточного программного обеспечения, который язапускается запись для доступа к базе данных и вызывает поиск mongoose, но он никогда не получает ответа, и в итоге время ожидания http-запроса истекает.
Базовые знания, мой доменный объект, с которым я имею дело, называется «конвой», у которого есть convoyCode, который является его идентификатором, я пытаюсь найти его на основе этого.
Вот метод
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 при попытке обновить Convoy ZX12 Пользователь B обновил свое местоположение на ZX12 Поиск Convoy ZX12 Поиск Convoy ZX12
Вы можете видеть последние 2 поиска Convoy ZX12'sДва раза я пытался вызвать метод, все до этого - журналы с последнего запроса, отправленного несколько часов назад.
Независимо от того, сколько раз я пытаюсь восстановить соединение, это не работает.У кого-нибудь есть идеи относительно того, что это может быть?