Когда в выражении вызывается следующий маршрут, он фактически выполняется 6 раз. Консоль.log печатается 6 раз, и моя логика мангуста выполняется 6 раз (экономит 6 раз в базе данных).Http Route называется несколько раз
Затем я получаю http 500 из cloud9ide «Не могу прокси-запрос». Я действительно смущен, у меня нет кодов в моем коде, как это может произойти? Console.log ("in else (2)"); печатайте 6 раз.
Редактировать: Я пробовал код mongooseLogic с комментариями различных частей, и проблема все еще была там. Похоже, это не проблема мангуста.
Второе редактирование: я изменил сообщение для получения и жестко закодированного тела, которое будет отправлено, и маршрут был выполнен только один раз.
Третья редакция: Я также использую everyauth для сеанса/аутентификации с помощью facebook oauth.
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'});
}
});
код на файл mongooseLogic:
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? –
Это ajax (jquery get json), он вызывается только один раз, потому что я проверил запрос в инструментах разработки Google Chrome. – guiomie
Можете ли вы отправить свое имя пользователя/название проекта на [email protected], чтобы мы могли отладить это? –