最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Express JS路由器中间件

IT培训 admin 13浏览 0评论

Express JS路由器中间件

我正在从Mailgun接收经过解析的电子邮件,这些电子邮件是通过其API发布到我设置的URL端点的。接收HTTP帖子的URL是使用正文解析器中间件的Expressjs路由到MongoDB。对于简单的文本键(例如“发件人”),我的路由到http的路由对MongoDB正常,但是某些消息参数包含连字符的格式存在问题。例如“ body-plain”。如果我包含“ req.body.body-plain”参数,Express会引发错误。有人在工作吗?

我不希望对整个字符串进行正则表达式。

这里是发布电子邮件回复的示例:

recipient: '[email protected]',
  sender: '[email protected]',
  subject: 'tewsgs',
  from: 'Kevin Psdit <[email protected]>',
  'X-Envelope-From': '<[email protected]>',
'body-plain': 'this is a test\r\n',
  Received: 
   [ 'from mail-qk0-f179.google (mail-qk0-f179.google         [209.85.220.179]) by mxa.mailgun with ESMTP id 556bfda1.7f7658358ef0-    in01; Mon, 01 Jun 2015 06:37:21 -0000 (UTC)',
 'by qkx62 with SMTP id 62so79143349qkx.3 for <[email protected]>; Sun, 31 May 2015 23:37:21 -0700 (PDT)',
 'by 10.140.18.241 with HTTP; Sun, 31 May 2015 23:37:21 -0700 (PDT)' ],
  'Dkim-Signature': 'v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail;     s=20120113; h=mime-version:date:message-id:subject:from:to:content-type;   cdx2K5lDwCjwcy0S6407m6/q9tAnFIltsT48O1nCACzQ4RQQYiXa VuiA==',
 'Mime-Version': '1.0',
  'X-Received': 'by 10.55.23.130 with SMTP id    2mr35323631qkx.33.1433140641295; Sun, 31 May 2015 23:37:21 -0700 (PDT
)',Date: 'Sun, 31 May 2015 23:37:21 -0700'

这里是快递路线:

'use strict';

var mongoose = require( 'mongoose' );
 var Email = mongoose.model('Email');

module.exports = function(router) {

router.route('/emails')
  //creates a new email
  .post(function(req, res){
      var email = new Email();

//THESE WORK
  email.recipient = req.body.recipient;
  email.sender = req.body.sender;
  email.from = req.body.from;
  email.subject = req.body.subject;
  email.timestamp = req.body.timestamp;
  email.token = req.body.token;
  email.signature = req.body.signature;

//THESE DO NOT WORK BECAUSE OF HYPHEN IN NAME
  email.body_plain = req.body.body-plain;
  email.stripped_text = req.body.stripped-text;
  email.stripped_signature = req.body.stripped-signature;
  email.body_html = req.body.body-html;
  email.stripped_html = req.body.stripped-html;
  email.attachment_count = req.body.attachment-count;
  email.attachment_x = req.body.attachment-x;
  email.message_headers = req.body.message-headers;
  email.content_id_map = req.body.content-id-map;      

email.save(function(err, email) {
  if (err){
    return res.send(500, err);
  }
  return res.json(email);
});
  })
回答如下:

解决方法是使用方括号表示法,这样您就可以访问键号无效的键

req.body['body-plain']

Express JS路由器中间件

我正在从Mailgun接收经过解析的电子邮件,这些电子邮件是通过其API发布到我设置的URL端点的。接收HTTP帖子的URL是使用正文解析器中间件的Expressjs路由到MongoDB。对于简单的文本键(例如“发件人”),我的路由到http的路由对MongoDB正常,但是某些消息参数包含连字符的格式存在问题。例如“ body-plain”。如果我包含“ req.body.body-plain”参数,Express会引发错误。有人在工作吗?

我不希望对整个字符串进行正则表达式。

这里是发布电子邮件回复的示例:

recipient: '[email protected]',
  sender: '[email protected]',
  subject: 'tewsgs',
  from: 'Kevin Psdit <[email protected]>',
  'X-Envelope-From': '<[email protected]>',
'body-plain': 'this is a test\r\n',
  Received: 
   [ 'from mail-qk0-f179.google (mail-qk0-f179.google         [209.85.220.179]) by mxa.mailgun with ESMTP id 556bfda1.7f7658358ef0-    in01; Mon, 01 Jun 2015 06:37:21 -0000 (UTC)',
 'by qkx62 with SMTP id 62so79143349qkx.3 for <[email protected]>; Sun, 31 May 2015 23:37:21 -0700 (PDT)',
 'by 10.140.18.241 with HTTP; Sun, 31 May 2015 23:37:21 -0700 (PDT)' ],
  'Dkim-Signature': 'v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail;     s=20120113; h=mime-version:date:message-id:subject:from:to:content-type;   cdx2K5lDwCjwcy0S6407m6/q9tAnFIltsT48O1nCACzQ4RQQYiXa VuiA==',
 'Mime-Version': '1.0',
  'X-Received': 'by 10.55.23.130 with SMTP id    2mr35323631qkx.33.1433140641295; Sun, 31 May 2015 23:37:21 -0700 (PDT
)',Date: 'Sun, 31 May 2015 23:37:21 -0700'

这里是快递路线:

'use strict';

var mongoose = require( 'mongoose' );
 var Email = mongoose.model('Email');

module.exports = function(router) {

router.route('/emails')
  //creates a new email
  .post(function(req, res){
      var email = new Email();

//THESE WORK
  email.recipient = req.body.recipient;
  email.sender = req.body.sender;
  email.from = req.body.from;
  email.subject = req.body.subject;
  email.timestamp = req.body.timestamp;
  email.token = req.body.token;
  email.signature = req.body.signature;

//THESE DO NOT WORK BECAUSE OF HYPHEN IN NAME
  email.body_plain = req.body.body-plain;
  email.stripped_text = req.body.stripped-text;
  email.stripped_signature = req.body.stripped-signature;
  email.body_html = req.body.body-html;
  email.stripped_html = req.body.stripped-html;
  email.attachment_count = req.body.attachment-count;
  email.attachment_x = req.body.attachment-x;
  email.message_headers = req.body.message-headers;
  email.content_id_map = req.body.content-id-map;      

email.save(function(err, email) {
  if (err){
    return res.send(500, err);
  }
  return res.json(email);
});
  })
回答如下:

解决方法是使用方括号表示法,这样您就可以访问键号无效的键

req.body['body-plain']

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论