我正在尝试为haraka邮件服务器创建一个插件,以支持将电子邮件保存到mongodb。 该插件运行正常,但是当我发送测试邮件时,它给了我这个错误:
插件队列/ mongo_email失败:TypeError:Email.save不是函数
这是插件代码:
var mongoose = require('mongoose');
var mongodbUri = "mongodb://localhost:27017/";
var options = {
useMongoClient: true,
socketTimeoutMS: 0,
keepAlive: true,
reconnectTries: 30
};
var db = mongoose.connect(mongodbUri, options);
var EmailSchema = mongoose.Schema({
emailFrom: String,
emailMsg: String,
emailRcv: String,
emailSubject: String
});
var Email = mongoose.model('Email', EmailSchema);
exports.hook_queue = function(next, connection){
var transaction = connection.transaction;
var receivedDate = transaction.header.headers.date;
var subjectLine = transaction.header.headers.subject;
Email.save({
emailFrom: transaction.mail_from,
emailMsg: transaction.data_lines,
emailRcv: receivedDate,
emailSubject: subjectLine
});
next();
}
答案 0 :(得分:1)
<强>答案:强>
var mongoose = require('mongoose');
var mongodbUri = "mongodb://localhost:27017/";
var options = {
useMongoClient: true,
socketTimeoutMS: 0,
keepAlive: true,
reconnectTries: 30
};
var db = mongoose.connect(mongodbUri, options);
var EmailSchema = mongoose.model('Email',{
emailFrom: String,
emailMsg: String,
emailRcv: String,
emailSubject: String
});
exports.hook_queue = function(next, connection){
var transaction = connection.transaction;
var receivedDate = transaction.header.headers.date;
var subjectLine = transaction.header.headers.subject;
var Email = new EmailSchema({
emailFrom: transaction.mail_from,
emailMsg: transaction.data_lines,
emailRcv: receivedDate,
emailSubject: subjectLine
});
Email.save();
next();
}
事务变量var transaction = connection.transaction;
是一个包含有关新电子邮件的所有信息的对象。可以修改mongodb架构EmailSchema
以支持其他选项,例如邮件头,附件等。