猫抓取应答应该怎么做,直到猫抓查询返回集合?

我的Node.JS应用程序通过HTTP GET路由处理程序中的mongoose模型在mongo数据库上执行查询。

var users; var usersArray; router.get('/', function(req, res) { userModel.find().exec(function(err, userDocs) { if (err) { console.log(err); } else { userArray = _.toArray(userDocks); users = userDocs; } }); res.render('users', { users: { length: usersArray.length, users: users } }); }); 

Mongoose查询返回JS promise。 处理这个时间滞后的常见情况是什么?

您应该根据mongoose查询的callback结果来处理结果。 这可以确保您根据结果返回正确的响应状态。

另外在Node.js中,最好在响应客户端之前return ,比如:

return res.status(200).send()

return保证当前上下文中的执行将停止并返回返回后语句的结果。即使我们没有对return的结果做任何事情,它仍然保证一旦我们回应用户,我们不会继续执行在这方面。 这将防止代码尝试响应两次,这将导致exception。

 router.get('/', function(req, res) { userModel.find().exec(function(err, userDocs) { if (err) { console.log(err); return res.status(400).json(err) } return res.render('users', { users: { length: _.toArray(userDocs).length, users: tournamentDocs } }); }); }); });