save()不是函数haraka插件+ mongoose

时间:2017-11-26 22:59:07

标签: node.js mongodb mongoose mongoose-schema haraka

我正在尝试为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();

}

1 个答案:

答案 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以支持其他选项,例如邮件头,附件等。