This Error is Occurring based on the order of the route/function defined and i have also searched different reasons for this error's occurrence but din't come across this specific reason
//Save Task
router.get("/tasks/newrec",function(req,res,next){
var newtask={
title:"newtask5",
isdone:"true"
}
db.tasks.save(newtask,function(error,result){
if(error){res.send(error); }
else
{ res.send("success"); }//res.json(result);}
});
});
If i am declaring this function first then i see no error if i am declaring as second or third function then i see this error.I am using node with mongojs.
var express=require('express');
var router=express.Router();
var mongojs= require('mongojs');
var db=mongojs('taskdb',['tasks']);
//display all tasks
router.get('/tasks',function(req,res,next){
db.tasks.find(function(err,tasks){
res.json(tasks);
});
});
//To find single record with id
router.get('/tasks/:id',function(req,res,next){
var uid = req.params.id.toString();
db.tasks.findOne({_id:mongojs.ObjectId(uid)},function(err,doc){
res.json(doc);
});
});
//Save Task
router.get("/tasks/newrec",function(req,res,next){
var newtask={
title:"newtask5",
isdone:"true"
}
db.tasks.save(newtask,function(error,result){
if(error){res.send(error); }
else
{ res.send("success"); }//res.json(result);}
});
});
Probably related with order of paths declaration, I suffered it sometimes. These are your paths:
All 3 are GET methods. Problem comes because some request paths come match in several paths. For example, /tasks/something matchs in the second one, but in the first one. Even /tasks/newrec, you are thinking it matchs with the third, but it matches with the 3 paths. And express avaluate the paths in the order you declare them, so it won't ever get into third path. That's why I think express raise the error. The basic rule is for each HTTP method always declare more specific paths before. In your case, this would be the right order:
Just the opposite you did. Hope it helps