2016-11-11 2 views
0

Wenn ich versuche, die maximale ID-Nummer in Mongodb zu finden, funktioniert es nicht. Was vermisse ich?Unbehandelt 'Fehler' Ereignis auf Mungo Frage

hier ist mein Code:

router.get('/check', function(req, res, next) { 
    var query = news.find({}, {"id":1,"_id":0}); 
    query.select('id'); 
    query.exec(function (err, result) { 
     res.writeHead(200,{'Content-Type':'text/plain;charset=UTF-8'}); 
     if(err) { 
      res.end(err); 
     }; 
     res.end(result); 
    }); 
}); 

und hier ist der Fehler:

events.js:160 
    throw er; // Unhandled 'error' event 
^
TypeError: First argument must be a string or Buffer 
at ServerResponse.OutgoingMessage.end (_http_outgoing.js:543:11) 
at C:\Users\Romy\WebstormProjects\388-admin\routes\admin.js:44:13 

Antwort

3

Schauen wir uns die Stack-Trace einen Blick:

TypeError: First argument must be a string or Buffer 

Okay, so bist du nicht Übergeben eines Arguments vom richtigen Typ an eine Funktion.

at ServerResponse.OutgoingMessage.end (_http_outgoing.js:543:11) 

Diese Funktion heißt end.

at C:\Users\Romy\WebstormProjects\388-admin\routes\admin.js:44:13 

Und Sie nennen es von der Linie 44, Offset 13, der Datei routes\admin.js.

Es ist höchstwahrscheinlich diese Zeile:

res.end(err); 

Da Fehler nicht Strings von Puffern sind. Wenn Sie den Fehler zurück senden wollen Nachricht, können Sie diese verwenden:

res.end(err.message); 

Auch stellen Sie sicher, dass, sobald Sie res.end() genannt, brauchen Sie es nicht ein zweites Mal anrufen, so umschreiben, Ihren Code zu diesem :

if (err) { 
     res.end(err.message); 
    } else { 
     res.end(result); 
    } 

Oder etwas kürzer:

if (err) { 
     return res.end(err.message); 
    } 
    res.end(result); 
Verwandte Themen