使用Meteor Autoform'meteormethod'属性回调?

时间:2016-03-08 04:38:27

标签: meteor mandrill meteor-autoform

Schemas = {};

Schemas.ContactForm = new SimpleSchema({
  name: {
    type: String,
    label: "Your name",
    max: 50
  },
  email: {
    type: String,
    regEx: SimpleSchema.RegEx.Email,
    label: "E-mail address"
  },
  message: {
    type: String,
    label: "Message",
    max: 1000
  }
});

HTML:

<template name="contactForm">
  {{#autoForm schema=Schemas.ContactForm id="contactForm" type="method" meteormethod="sendEmail"}}
  <!-- etc. -->
  {{/autoForm}}
</template>

流星法,请查看评论:

Meteor.methods({

  sendEmail: function(contents){
    check(contents, Schemas.ContactForm);
    Mandrill.messages.send({
      // do something to send
    }, function(error, response){
      if (error){
        // how does error bubble back up to the client?
      } else {
        // how does success bubble back up to the client?
      }
    })
  },

})

因此,使用AutoForm meteormethod属性,如何从我的服务器调用Mandrill中获取错误或响应,以回到客户端,以便我可以通知用户表单已提交,通过电子邮件成功发送了吗?

如果不在AutoForm上使用meteormethod属性并手动连接表单提交上的Meteor.call,会不会更好?

2 个答案:

答案 0 :(得分:0)

Meteor.methods({

  sendEmail: function(contents){
          check(contents, Schemas.ContactForm);
          return Mandrill.messages.send({
          // do something to send
          }, function(error, response){
             if (error){
               return error
             } else {
               return response
             } 

  })},})

答案 1 :(得分:0)

尝试使用Meteor.wrapAsync来调用它并返回它。

return Meteor.wrapAsync(Mandrill.messages.send, Mandrill.messages)(contents);