2016-11-11 8 views
0

mongodbで最大ID番号を見つけようとすると機能しません。私は何が欠けていますか?ここmongooseクエリでハンドルされていない 'error'イベント

は私のコードです:

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); 
    }); 
}); 

、ここではエラーです:

TypeError: First argument must be a string or Buffer 

わかりましたので、あなたはありませんね。

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 

答えて

3

はのは、スタックトレースを見てみましょう関数に正しい型の引数を渡します。

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

この機能はendと呼ばれます。

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

そして、あなたはライン44から呼び出し、ファイルroutes\admin.jsの、13を相殺しました。

それは最も可能性が高い。この行です:エラーは、バッファの文字列ではありませんので

res.end(err); 

res.end(err.message); 

また、あなたがres.end()と呼ばれたら、あなたはそれ二回呼び出すので、これにコードを書き換えていないことを確認してください:あなたはエラーメッセージを返送する場合は、これを使用することができます:

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

それとも、ちょっと短い:

if (err) { 
     return res.end(err.message); 
    } 
    res.end(result); 
関連する問題