【发布时间】:2015-02-17 00:45:42
【问题描述】:
我有一个快速路由,它接受一些参数,查询数据库,然后返回一些响应。
我正在使用sequelize查询数据库:
router.get('/query', function(req,res) {
var name = req.params.name;
var gid = req.params.gid;
// Query the db
models.user.find({ where: { name: name }}).then(function(user) {
models.group.find({ where: { id: gid }}).then(function(group) {
// if user found, return data to client
if (user) {
res.json({"user": user, "group": group});
}
});
}).catch(function(error) {
// catch any errors from db query
res.status(500).json({"error":error});
});
// Return a server error for any other reason
// This causes ERROR
res.status(500).json({"error":"Something went wrong. Check your input."});
});
但我一直在最后一行收到错误:
Can't set headers after they are sent
似乎最后一行总是运行,即使它找到了一个用户(它应该将数据返回给客户端并完成)。
为什么res.json(..)找到用户后不立即返回客户端?由于已经设置了标题,所以当最后一行运行时,它会抛出该错误。
【问题讨论】:
标签: javascript node.js express sequelize.js