2016-04-07 1 views
0

Je reçois cette erreur:Obtenir l'erreur suivante est pas une fonction dans le nœud js/js express

next is not a function

quand j'écris next(); dans mon contrôleur mais ne peut pas comprendre pourquoi l'erreur vient même si je défini dans la fonction params.

Router Js:

router.post('/era',controlleri.book,booking_controller.book,function(req,res){ 
res.writeHead(200, {'Content-Type': 'text/plain'}); 
          res.end('okay'); 
    console.log("done in server.js"); 
}); 

Ceci est mon fichier routeur dans lequel je veux exécuter la fonction synchrone de sorte que soit la raison pour laquelle je me sers next();.

code de fonction Controller.Book:

module.exports.book=function(req,res,next){ 
    var dates=req.body.dates; 
    var times=req.body.times; 
    var result="yes"; 

    var query=`dates.${dates}.${times}.ava`; 

    db.mohd.find({[query]:result},{userid:1,_id:0},function (err, docs) { 
     if(err){ 

      res.send(404); 

     }else if(docs==null){ 

      res.send(404); 

     }else{ 
       if(req.body){ 
         var thid=req.body.therapist_id; 
         var dates=req.body.dates; 
         var times=req.body.times; 
         var query=`dates.${dates}.${times}.ava`; 

        db.mohd.update({ userid: thid }, 
         { $set: { [query]: "no" } }, function() { 
          console.log("updated"); 
        }); 
         **next();** //Here the error occurs 
       }else{ 
         res.send("Get the F out of here"); 
       } 
     } 
});} 

Bien que la fonction successive booking_controller.book est exécutée mais le programme arrête en donnant l'erreur:

next is not a function

+0

Veuillez mettre correctement en retrait votre code. C'est juste un chaos. – str

+1

Je ne vois pas 'next' défini dans les paramètres de votre fonction. Pourriez-vous nous fournir un peu plus de code, s'il vous plaît? – Pedro

+0

Désolé ajouté Plein code correct @Pedro –

Répondre

0

Vous devez passer à côté comme le 3ème paramètre de la fonction de rappel de recherche.

function(err, docs, next) { ... }