尝试从 mongodb 获取数据时出错:发送后无法设置 headers
Error when trying to fetch data from mongodb: Can't set headers after they are sent
我正在检查 JOB(通过 JOBID)是否已存在于数据库中,如果存在,请在视图页面中显示它。
我正在尝试通过 Nodejs、Express Router 和控制器从 MongoDB 获取数据到 HTML 查看页面。我想问题出在路由器页面上。我不确定如何将数据从节点传递到路由器以及从路由器传递到控制器。我有 JOBID 我需要获取与该工作 ID 对应的所有详细信息并将其显示在视图页面中。你能帮我么?
路由器代码:
router.post('/RequirementView',function(req,res)
{
addRequirement.requirementView(req,res);
res.send(res.requirement);
});
NodeJS 代码:
exports.requirementView = function(req, res) {
if (req.body.JobID) {
RequirementModel.findOne({ 'JobID': req.body.JobID }, function(err, requirement) {
if (requirement != null) {
requirement.Vertical = req.body.Vertical || requirement.Vertical;
requirement.save(function(err) {
res.status(200).send(requirement);
});
Mongo没有问题。
问题是由调用 res.send()
两次引起的 - 一次在 exports.requirementView
中,第二次在 /RequirementView
处理程序中。
它被调用了两次,因为在您的路由处理程序中,您首先调用了:
addRequirement.requirementView(req,res);
(其中包括 es.status(200).send(requirement);
)
然后:
res.send(res.requirement);
这是对 res.send()
的第二次调用。
您正在执行 res.send() 两次。尝试删除 res.send(res.requirement);因为您已经在 requirementView 模块
中发送了响应
我正在检查 JOB(通过 JOBID)是否已存在于数据库中,如果存在,请在视图页面中显示它。
我正在尝试通过 Nodejs、Express Router 和控制器从 MongoDB 获取数据到 HTML 查看页面。我想问题出在路由器页面上。我不确定如何将数据从节点传递到路由器以及从路由器传递到控制器。我有 JOBID 我需要获取与该工作 ID 对应的所有详细信息并将其显示在视图页面中。你能帮我么?
路由器代码:
router.post('/RequirementView',function(req,res)
{
addRequirement.requirementView(req,res);
res.send(res.requirement);
});
NodeJS 代码:
exports.requirementView = function(req, res) {
if (req.body.JobID) {
RequirementModel.findOne({ 'JobID': req.body.JobID }, function(err, requirement) {
if (requirement != null) {
requirement.Vertical = req.body.Vertical || requirement.Vertical;
requirement.save(function(err) {
res.status(200).send(requirement);
});
Mongo没有问题。
问题是由调用 res.send()
两次引起的 - 一次在 exports.requirementView
中,第二次在 /RequirementView
处理程序中。
它被调用了两次,因为在您的路由处理程序中,您首先调用了:
addRequirement.requirementView(req,res);
(其中包括 es.status(200).send(requirement);
)
然后:
res.send(res.requirement);
这是对 res.send()
的第二次调用。
您正在执行 res.send() 两次。尝试删除 res.send(res.requirement);因为您已经在 requirementView 模块
中发送了响应