2016-11-11 33 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);