在express中调用以下路由时,实际执行了6次。 console.log被打印6次,并且我的猫鼬逻辑被执行6次(在数据库中保存6次)。多次调用Http路由
然后我从cloud9ide返回一个http 500“无法代理请求”。我真的很困惑,我的代码中没有循环,这怎么会发生? console.log(“in else(2)”);打印6次。
编辑:我试了mongooseLogic代码,各部分注释掉了,问题仍然存在。这看起来不是猫鼬问题。
第二次编辑:我已经更改了发送的内容并硬编码了要发送的主体,并且路由只执行一次。
第三编辑:我也使用everyauth进行会话/身份验证与facebook oauth。在mongooseLogic文件
app.post("/result/:userId/:elementId", function(req, res) {
var receivedJSON = req.body;
console.log("In route");
//Making sure the receive request is valid
if(typeof(receivedJSON.type) !== undefined) {
mongooseLogic.saveResults(req.params.elementId, receivedJSON, req.params.userId, function(message) {
if(message === "Success") {
res.json({ success: true, message: 'Result saved.'});
}
else {
res.json({ success: false, message: 'Error in saving results. Trace: ' + message});
}
});
}
else {
res.json({ success: false, message: 'Failed, Invalid object sent to server'});
}
});
代码:
var saveResults = function(elementRefId, receivedResult, userId, callback){
if(elementRefId.toString().length !== 24){
callback("Invalid objectId for elementId");
}
else{
Result.findOne({ "id" : userId, "serieResult.id": elementRefId }, function(err, result){
if(err){
callback("No Document found: " + err);
}
else if(result === null){
console.log("in null");
var tempResult = {
id : elementRefId,
unit : receivedResult.unit,
value : receivedResult.value
}
Result.update({ "id" : userId}, { $push: {"serieResult": tempResult}}, {upsert: true}, function(err){
if(err){
callback("Error in saving result (Distance): " + err);
}
else{
callback("Success");
}
});
}
else{
Result.update({ "id" : userId, "serieResult.id": elementRefId },
{ $set:{
"serieResult.$.unit" : receivedResult.unit,
"serieResult.$.value" : receivedResult.value,
},{upsert: true}, function(err){
if(err){
callback("Cant update doc: " + err);
}
else{
console.log("in else (2)");
callback("Success");
}
});
}
});
}
}
}
你的客户代码如何调用它?你能用cURL重现这个吗? – 2012-03-11 06:21:52
它是一个ajax(jquery get json),它只被调用一次,因为我已经检查了google chrome developper工具中的查询。 – guiomie 2012-03-11 14:29:17
您可以通过电子邮件将您的用户名/项目名称发送至[email protected],以便我们帮助您进行调试吗? – 2012-03-12 18:44:19