2016-01-25 1 views
0

J'utilise http://mailin.io/doc pour analyser les e-mails de mon application (future) Meteor. Par conséquent, j'ai créé un webhook en utilisant Iron-Router qui devrait traiter le message et les pièces jointes.Parse urlencoded Message avec IronRouter dans Meteor

En utilisant le code suivant, un { } est écrit dans la console. J'ai trouvé des personnes signalant des problèmes similaires, mais les solutions fournies ne fonctionnent pas pour moi.

Toutes les idées?

Répondre

0

Dans les liens, la solution de contournement correcte a été décrite, semble que j'ai également eu une autre erreur. Le code suivant fait l'affaire pour moi:

if (Meteor.isServer) { 
    var Busboy = Meteor.npmRequire("busboy"), 
     fs = Npm.require("fs"), 
     os = Npm.require("os"), 
     path = Npm.require("path"); 

    Router.onBeforeAction(function (req, res, next) { 
     var filenames = []; // Store filenames and then pass them to request. 
     _.extend(req, {postData: {}}); 

     if (req.method === "POST") { 
      var busboy = new Busboy({ headers: req.headers }); 
      busboy.on("file", function (fieldname, file, filename, encoding, mimetype) { 
       var saveTo = path.join(os.tmpDir(), filename); 
       file.pipe(fs.createWriteStream(saveTo)); 
       filenames.push(saveTo); 
      }); 
      busboy.on("field", function(fieldname, value) { 
       req.postData[fieldname] = value; 
      }); 
      busboy.on("finish", function() { 
       // Pass filenames to request 
       req.filenames = filenames; 
       next(); 
      }); 
      // Pass request to busboy 
      req.pipe(busboy); 
     } else { 
      this.next(); 
     } 
    }); 
} 

et l'itinéraire requis ressemble à ceci:

Router.route('/receive/', {where: 'server'}) 
    .post(function() { 

    // Use this.request.postData to access the message content 
    postData = this.request.postData; 
});