我正在使用http://mailin.io/doc来解析我(未来)Meteor应用程序的电子邮件。因此,我使用Iron-Router创建了一个webhook,它应该处理消息和附件。
使用以下代码,在控制台中写入{ }
。
Router.route('/receive/', {where: 'server'})
.post(function(req, res) {
console.log(this.request.body);
});
我发现有些人报告了类似的问题,但提供的解决方案对我不起作用。
有什么想法吗?
答案 0 :(得分:0)
在链接中描述了正确的解决方法,似乎我也有另一个错误。以下代码为我做了诀窍:
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();
}
});
}
并且所需的路线如下所示:
Router.route('/receive/', {where: 'server'})
.post(function() {
// Use this.request.postData to access the message content
postData = this.request.postData;
});