Node.js 节点js API REST服务身份验证翻译文本邮件节点邮件程序

Node.js 节点js API REST服务身份验证翻译文本邮件节点邮件程序,node.js,angularjs,express,Node.js,Angularjs,Express,我已经使用NodeJS和express开发了一个RESTAPI。 当用户进行注册时,我使用node mailer发送邮件。 我有身份验证服务(POST方法),它读取通过应用程序传递的语言代码,并发送带有翻译文本和令牌的电子邮件以验证注册。带有令牌的链接是发送其他邮件的GET请求。 我如何才能说得到的方法是使用哪种语言代码,这样就可以发送一封带有翻译的邮件 Hi已将此代码实现为验证令牌: // Verification token router.get('/verification/:langua

我已经使用NodeJS和express开发了一个RESTAPI。 当用户进行注册时,我使用node mailer发送邮件。 我有身份验证服务(POST方法),它读取通过应用程序传递的语言代码,并发送带有翻译文本和令牌的电子邮件以验证注册。带有令牌的链接是发送其他邮件的GET请求。 我如何才能说得到的方法是使用哪种语言代码,这样就可以发送一封带有翻译的邮件

Hi已将此代码实现为验证令牌:

// Verification token
router.get('/verification/:language/:token/', function(req, res, next) {
const language = req.params.language;

console.log(language); 


// Check for validation errors
var errors = req.validationErrors();
if (errors) return res.status(400).send(errors);

// Find a matching token
Token.findOne({ token: req.params.token }, function (err, token) {
//if (!token) return res.status(400).send({status: 'ko',error: {type: 'not-verified', msg: 'We were unable to find a valid token. Your token my have expired.'}} );
if (!token) return res.redirect('https://localhost/expiredtoken');



// If we found a token, find a matching user
User.findOne({ _id: token._userId }, function (err, user) {
  if (!user) return res.status(400).send({ msg: 'We were unable to find a user for this token.' });

  //if (user.isVerified) return res.status(400).send({status: 'ko',error:{type: 'already-verified', msg: 'This user has already been verified.'}});
  if (user.isVerified) return res.redirect('https://localhost/userverified');

  // Verify and save the user
  user.isVerified = true;
  user.save(function (err) {
    if (err) { return res.status(500).send({ msg: err.message }); }
    //res.status(200).send({status: 'ok', data: { msg: 'The account has been verified. Please log in.'}});
    res.redirect('https://localhost/login');


    //
    var text_email;
    if (language == 'en') {
      text_email = 'Hi'
    }
    if (language == 'it') {
      text_email = 'Ciao'
    }


    var client = nodemailer.createTransport(sgTransport(options));

    var email = {
        from: 'noreply@test.com',
        to: user.email,
        subject: 'Registration successfully confirmed',

        text: text_email
      };

    client.sendMail(email, function(err, json){
        if (err){
            return res.status(500).send({ msg: err.message });
        }
        else {
            res.status(200).send({status: 'ok', data: { msg: 'A verification email has been sent to ' + user.email + '.'}} )
        }
    });



    //

        });
    });
});

});
验证有效,发送邮件也有效,但应用程序崩溃,出现以下错误: 错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头


有什么帮助吗???

请使用GET
http://localhost/route?language=en


如果您使用的是
express
,您可以从路由处理程序中使用
req.query.language
访问语言值。

您可以使用GET方法,在路由中使用参数

例如:

路线:
http://your-app-domain/route?language=en

获取语言:

...
app.get('/route', (req, res) => {
  const language = req.query.language;
  console.log(language); // en
});


希望这有帮助

如果您在验证令牌时有可用的语言代码,您可以在GET方法的查询参数中发送语言代码。在这种情况下,您应该接受答案,并为您获得的新错误打开一个新问题对不起!我最后在路线的名字上自欺欺人。我已经更正了答案。