gpt4 book ai didi

mongodb - NodeJS Mongoose 数据库随机访问不返回结果

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:35 24 4
gpt4 key购买 nike

我正在开发我的第一个 NodeJS 应用程序,它基本上只是使用 MongoDB(托管在 MongoHQ 上)数据库的 Restful Web 服务。

我正在使用 Express 和 Mongoose 来协助路由和数据库访问,它似乎在大多数情况下都工作得很好,但是随机地我会遇到一个问题,我编写的用于访问数据库的中间件方法之一启动,并调用 mongoose 查找,但它永远不会得到响应,最终 http 请求超时。

背景知识,我正在处理的域对象称为“convoy”,它有一个 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 上更新了位置寻找车队ZX12寻找车队ZX12

您可以看到最后两次发现 Convoy ZX12 是我尝试调用该方法的两次,之前的所有内容都是几小时前发送的最后一个请求的日志。

无论我尝试重新连接多少次,它都不起作用。有人知道它可能是什么吗?

最佳答案

尝试使用end而不是send方法

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);

}
});
}

关于mongodb - NodeJS Mongoose 数据库随机访问不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com