Express JS路由器中间件 – 身体parsing器 – req.body有连字符

我收到Mailgun分析过的邮件,这些邮件通过API发布到我设置的URL终点。 接收HTTPpost的URL是使用主体parsing器中间件到MongoDB的Expressjs路由。 我有一个简单的文本键,如“发件人”,但我有一些包含连字符的消息参数的格式问题的路由工作正常的MongoDB的path。 比如“纯朴”。 如果包含“req.body.body-plain”的参数,则会引发错误。 有没有人有工作?

我宁愿不要把整个string正则expression式。

以下是发布的电子邮件回复的示例:

recipient: 'postmaster@appmail.sisdaf.com', sender: 'kevsdaf@mail.com', subject: 'tewsgs', from: 'Kevin Psdit <kesdfit@gmail.com>', 'X-Envelope-From': '<kasdftit@gmail.com>', 'body-plain': 'this is a test\r\n', Received: [ 'from mail-qk0-f179.google.com (mail-qk0-f179.google.com [209.85.220.179]) by mxa.mailgun.org with ESMTP id 556bfda1.7f7658358ef0- in01; Mon, 01 Jun 2015 06:37:21 -0000 (UTC)', 'by qkx62 with SMTP id 62so79143349qkx.3 for <postmaster@appmail.simadsftrade.com>; 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.com; 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']