2017-04-25 53 views
1

在我app.post文件我已经改变升级req.param到req.body改变方法= POST方法来从= twilio MediaURL GET

var mediaUrl = req.param('MediaUrl' + i); //deprecated in express 4 

var mediaUrl = req.body.MediaUrl + i; or req.params.MediaUrl + i; 

看我的控制台日志它链接到twilio MediaURL0。但在Heroko登录

heroku[router]: at=info method=POST path="/message" host=(removed).herokuapp.com request_id=(removed)" dyno=web.1 connect=0ms service=95ms status=200 bytes=256 protocol=https 

成为

heroku[router]: at=info method=GET path="/null" host=(removed).herokuapp.com request_id=(removed) fwd="74.3.132.218" dyno=web.1 connect=0ms service=3ms status=304 bytes=146 protocol=https 

当我升级。我试图弄清楚为什么MediaURL将成为Method = GET,但其他任何信息都将保留为Method = POST。我需要我的MediaURL为我的Twilio SMS消息传递应用程序工作的Method = POST。

这里是我的完整app.post

app.post('/message', function (req, res) { 
groupRef.where({"memberNumber":req.body.From}).limit(1).on("value", function (data){ 
    if(data.count()){ 
     data.forEach(function(snapshot){ 
      var member = snapshot.value(); 
      messagesRef.push({ 
       sid: req.body.MessageSid, 
       type:'text', 
       tstamp: new Date().toLocaleString('en-US', { timeZone: "America/Denver" }), 
       fromName:member.memberName, 
       fromNumber:req.body.From, 
       message:req.body.Body, 
       media:"", 
       groupNumber:req.body.To 
      }); 
     }); 
    } 
}); 

var numMedia = parseInt(req.body.NumMedia); 
if (numMedia > 0) { 
    for (i = 0; i < numMedia; i++) { 
     //var mediaUrl = req.body.MediaUrl + i; 
     //var mediaUrl = req.params.MediaUrl + i; 
     var mediaUrl = req.param('MediaUrl' + i); //deprecated in express 4 
     groupRef.where({"memberNumber":req.body.From}).limit(1).on("value", function (data){ 
      if(data.count()){ 
       data.forEach(function(snapshot){ 
        var member = snapshot.value(); 
        messagesRef.push({ 
         sid: req.body.MessageSid, 
         type:'text', 
         tstamp: new Date().toLocaleString('en-US', { timeZone: "America/Denver" }), 
         fromName:member.memberName, 
         fromNumber:req.body.From, 
         message:"", 
         media:mediaUrl, 
         groupNumber:req.body.To 
        }); 
       }); 
      } 
     }); 
    } 
} 

var resp = new twilio.TwimlResponse(); 
resp.message('Message received.'); 
res.writeHead(200, { 
    'Content-Type':'text/xml' 
}); 
res.end(resp.toString()); 

});

回答

1

如果你算算你将不得不使用括号符号来访问一个对象的属性名称。

var mediaUrl = req.body['MediaUrl' + i]; 
+0

我很尴尬地说,我试过var mediaUrl = req.body。['MediaUrl'+ i];尽快我会接受这个答案。谢谢您的帮助 –