2016-11-11 59 views
0

當我嘗試在mongodb中查找最大id編號時,它不起作用。我錯過了什麼?在貓鼬查詢上未處理的「錯誤」事件

這裏是我的代碼:

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

和這裏的錯誤:

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

讓我們來看看堆棧跟蹤:

TypeError: First argument must be a string or Buffer 

好了,你不將正確類型的參數傳遞給函數。

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

該功能被稱爲end

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

你從44行調用它,偏移13,文件routes\admin.js的。

這很可能是這一行:

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