2016-04-21 22 views
-4

Ich möchte Fehler oder Ergebnis zu Postdata-Funktion zurückgeben, aber es funktioniert nicht.
Ich benutze Mungo-Datenbank und Sammlung Name ist 'Demo'.node.js Callback-Funktion gibt keinen Wert zurück

Demo.prototype.postdata = function(username, mobile, image) { 
    var data = new conn.Demo({username, mobile, image}); 
    data.save(function(err, result) { 
     if (err) { 
      return err; 
     } else { 
      return result; 
     } 
    }); 
    return data.save(); 
} 
+0

Überprüfen Sie die 'Related' Bar in der rechten Seite, die erste Verbindung. – zerkms

+2

Ich denke, er meint [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Jer

Antwort

0

Umfang; Die Antwort, die Sie suchen, ist, wie Sie mit dem Umfang der Variablen umgehen können, die von 'data.save()' zurückgegeben werden.

In JavaScript und anderen Sprachen, ob sie eine interpretierte Sprache (PHP, Bash, Asp, JavaScript, VBScript, JSP, gehen usw.) oder kompiliert (C, C++, C#, Objective-C usw.) alle nutzen Scoping.

Variablen können global oder lokal im Gültigkeitsbereich sein. Ihre Variablen 'result' und 'err' sind in diesem Beispiel lokal im Bereich der Funktion 'data.save()' und damit für die Elternfunktion nicht zugänglich. Demo.prototype.postdata().

In diesem Sinne glaube ich, andere Kommentatoren sind korrekt über diese Frage, die mögliche doppelte in Bezug auf varible Umfang.

0

ich Antwort bekommen haben ...

function rawBody(req, res, next) { 
    var chunks = []; 

    req.on('data', function(chunk) { 
     chunks.push(chunk); 
    }); 

    req.on('end', function() { 
     var buffer = Buffer.concat(chunks); 
     req.bodyLength = buffer.length; 
     req.rawBody = buffer; 
     next(); 
    }); 

    req.on('error', function (err) { 
     console.log(err); 
     res.status(500); 
    }); 
} 
router.post('/:mobile/:username',rawBody,function(req,res){ 
    if(req.rawBody && req.bodyLength>0){ 
     var data={ 
      mobile:req.params.mobile, 
      username:req.params.username, 
      image:req.rawBody 
     } 
     content.postdata(data,callback);  

     function callback(data){ 
      console.log(data); 
     } 
    } 
}) 

    Demo.prototype.postdata=function(data,callback) 
{ 
    var data=new conn.Demo(data); 
    data.save(function(err,result){ 
     if(err){ 
      callback(err) 
     }else{ 
      callback("successfully save"); 
     } 
    }) 
} 
Verwandte Themen