当前位置: 首页 > 知识库问答 >
问题:

不断获取错误:发送邮件后无法设置邮件头

慎懿轩
2023-03-14

所以我正在尝试更新我的代码,并将其显示给用户。基本上它是能够做什么我需要做但后执行它我得到这个错误

C:\Users\tester01\u 2\myproject\node\u modules\mongodb core\lib\cursor。js:174投掷错误;^错误:发送邮件后无法设置邮件头。在服务器响应。传出消息。ServerResponse上的setHeader(_http_outgoing.js:357:11)。ServerResponse上的标题(C:\Users\tester01\u 2\myproject\node\u modules\express\lib\response.js:725:10)。发送(C:\Users\tester01\u 2\myproject\node\u modules\express\lib\response.js:170:12)到C:\Users\tester01\u 2\myproject\dbUpdate。js:13:14在C:\Users\tester01\u 2\myproject\dbUpdate。js:28:5位于handleCallback(C:\Users\tester01\u 2\myproject\node\u modules\mongodb-core\lib\cursor.js:171:5),位于cursor的下一个函数(C:\Users\tester01\u 2\myproject\node\u modules\mongodb-core\lib\cursor.js:682:5)。下一步[作为下一步](C:\Users\tester01\u 2\myproject\node\u modules\mongodb-core\lib\cursor.js:692:3)在循环中(C:\Users\tester01\u 2\myproject\node\u modules\mongodb\lib\cursor.js:694:8)在每个(C:\Users\tester01\u 2\myproject\node\modules\mongodb\lib\cursor.js:16)

这是我的密码

var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var url = 'mongodb://localhost:27017/myproject';

module.exports = {

postCollection : function(req, res){
    var issueQty = req.body.issueQty;
    var itemDescrip = req.body.itemDescrip;
MongoClient.connect(url, function(err, db) {
    assert.equal(null, err);
    updateRecord(db, req, function(doc) {
    return res.send('Record Found. Now updating this document...' + 
itemDescrip + ' Record Updated. This is the new record ' + doc )
    res.end();
    db.close();
    });

});
}
}
var updateRecord = function(db, req, callback) {
var cursor = db.collection('documents').find({'Item Description': 
req.body.itemDescrip, 'Issued QTY': req.body.issueQty})
cursor.each(function(err,doc){
   assert.equal(err, null);
     if(doc != err){
         console.log('Successfully queried');
         console.log(doc);
         callback(JSON.stringify(doc));

     } else{
         throw err;
     }
  });
db.collection('documents').updateMany(
  { 'Item Description': req.body.itemDescrip},
  {
    $set: { 'Issued QTY': req.body.issueQty }
  },function(err, results) {
    console.log(results);
    console.log('Done');
    console.log(results);

});
};

我认为这与我的res有关,因为我看到的所有res线程都处于错误的位置,但我需要将我的res.send放在那里,以便它可以使用doc。有没有办法解决这个问题?谢谢

共有1个答案

韦寒
2023-03-14

首先,您应该删除前面的res.send()

其次,在updateRecord函数中,不应在循环中调用回调函数,它将执行多次。然后在执行updateMany之前关闭数据库。

如果您想发送doc,您应该使用一个临时数组来保存doc,并在更新记录中完成所有逻辑后将其传递给res。

如果我理解正确,以下是我对您代码的修改,

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/myproject';

var updateRecord = function(db, req, callback) {
    db.collection('documents').updateMany({ 'Item Description': req.body.itemDescrip }, {
        $set: { 'Issued QTY': req.body.issueQty }
    }, function(err, results) {
        if (err) return callback(err);
        console.log('Done');
        console.log(results);
        var cursor = db.collection('documents').find({
            'Item Description': req.body.itemDescrip,
            'Issued QTY': req.body.issueQty
        });
        var temp = [];
        cursor.each(function(err, doc) {
            if (err) {
                return callback(err);
            }
            console.log('Successfully queried');
            console.log(doc);
            temp.push(JSON.stringify(doc));
        });
        callback(null, temp);
    });
};

module.exports = {
    postCollection: function(req, res) {
        var issueQty = req.body.issueQty;
        var itemDescrip = req.body.itemDescrip;
        MongoClient.connect(url, function(err, db) {
            if(err) {
              res.send(err);
              res.end();
              db.close();
              return;
            }
            updateRecord(db, req, function(err, docs) {
                if(err){
                  res.send(err);
                }
                else{
                  res.send(docs);
                }
                res.end();
                db.close();
            });

        });
    }
}

 类似资料:
  • 我在开快车。js应用程序,其中我有一个返回json对象的路由 https://serene-depths-3284.herokuapp.com/chapters?setLng=en-UK 在我的控制器文件夹中,我有章节。咖啡文件,如下所示: 该代码可在以下网址找到:https://github.com/TZM/tzm-blade/blob/master/app/controllers/chapte

  • 我对Rails相当陌生,所以这可能会成为显而易见的事情;然而,我刚刚花了一天的大部分时间来解决这个问题。 我有一个rails应用程序,我已经开发了一段时间,但是我今天才开始实现mailers。我在这里学习了Rails ActionMailer教程:http://guides.rubyonrails.org/v3.0.3/action_mailer_basics.html邮件程序在一个新的示例应用程

  • 如何解决这个SMTP错误问题?当我发送邮件时,我会遇到这个错误信息。使用本地系统发送邮件不是问题。有人知道这个问题的解决方法吗? System.Net.Mail.SMTPException:SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1需要身份验证。 在System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode st

  • 我正在使用Laravel,我想使用PHP邮件功能。我已经尝试过了: 但没有电子邮件获取发送至少我不接收它检查垃圾邮件文件夹,它不在那里,我不接收任何错误消息时,执行此代码。 php邮件函数用来发送邮件的是什么?也许我错过了什么? 此外,我没有运行这个地方,我有它上传到我的VPS运行Ubuntu 16.04。1 LTS

  • 尽管Python 通过smtplib 模块使得发送邮件很简单,Django 仍然在此基础上提供了几个轻量的封装包。这些封装包使得发送邮件非常快速、让开发中测试发送邮件变得很简单、并且支持不使用SMTP 的平台。 这些代码包含在django.core.mail模块中。 简单例子 两行代码实现: from django.core.mail import send_mail send_mail('Su

  • cmf_send_email($address, $subject, $message) 功能 发送邮件 参数 $address: string 收件人邮箱 $subject: string 邮件标题 $message: string 邮件内容 返回 array 格式 array( "error"=>0|1,//0代表出错 "message"=> "出错信息" );