2016-08-11 2 views
0

Прежде всего спасибо за то, что нашли время, чтобы прочитать это, я должен сказать, что я новичок в мире веб-разработки. Я просил реализовать mailchimp (я никогда не слышал об этом) в проекте, для этого я только начал поиск информации о chimpmail API, также я пошел по учебнику от meteorchef, и проблема в том, что я могу сделать эту работу, я нашел довольно сложно реализовать это с помощью React. У меня проблемы с моими методами, когда я ввожу почту и запускаю метод onSubmit, вывод консоли говорит, что «метод handleSubscriber не найден». До сих пор я только что сделал часть handleSubscriber из учебника, я не показываю ни одного электронного списка рассылки. Я запускаю приложение Meteor с meteor --settings=settings.json. Я буду очень признателен за помощь.Как использовать chimpmail в Meteor + React?

Update

я получил полезный комментарий, указать его, что я должен добавить свой файл методы в мой каталог сервера. Делая это, я больше не получил «метод handleSubscriber не найден» вместо того, что теперь я получил Exception while invoking method 'handleSubscriber' Error: Match error: Expected object, got null

Это мои Метеор пакеты:

meteor-base 
mobile-experience 
mongo 
blaze-html-templates 
reactive-var 
jquery 
tracker 
library 

standard-minifier-css 
standard-minifier-js  
es5-shim 
ecmascript 

[email protected] 
accounts-ui 
accounts-password 
practicalmeteor:mocha 
miro:mailchimp 
fortawesome:fontawesome 
themeteorchef:bert 
standard-app-packages 
underscore 
themeteorchef:jquery-validation 
check 

Это мой settings.json

{ 
    "public": {}, 
    "private": { 
    "MailChimp": { 
     "apiKey": "theapikey", 
     "listId": "thislsitId" 
     } 
    } 
} 

в chimpMail.js

import { Meteor } from 'meteor/meteor'; 
import { check } from 'meteor/check'; 

const settings = Meteor.settings.private.MailChimp; 
const chimp = new MailChimp(settings.apiKey, { version: '2.0' }); 
const listId = settings.listId; 

Meteor.methods({ 
    'handleSubscriber'(subscriber) { 
    check(subscriber, { 
     email: String, 
     action: String, 
    }); 
    try { 
    const subscribe = chimp.call('lists', subscriber.action, { 
     id: listId, 
     email: { 
     email: subscriber.email, 
     }, 
    }); 
    return subscribe; 
    } catch (exception) { 
     return exception; 
    } 
}, 
}); 

Это мой emailSubscription.js х

import { Meteor } from 'meteor/meteor'; 
import React, { Component } from 'react'; 
import { createContainer } from 'meteor/react-meteor-data'; 

class EmailSubscription extends Component { 
    handleOnSubmit(event) { 
    event.preventDefault(); 

    Meteor.call('handleSubscriber', this.props.subscriber,   
     function(error, response) { 
     if (error) { 
      Bert.alert(error.reason, "warning"); 
     } else { 
     if (response.complete || response.euid) { 
      const subscribeMessage = 'Please confirm your email to 
      complete your subscription!'; 
      const unsubscribeMessage = subscriber.email + 'successfully 
      unsubscribed!'; 
      const message = subscriber.action === "subscribe" ? 
      subscribeMessage : unsubscribeMessage; 

      Bert.alert(message, "success"); 
     } else { 
     Bert.alert(response.message, "warning"); 
     } 
    } 
    }); 
} 

render() { 
    return (
    <div className="container"> 
     <form onSubmit={this.handleOnSubmit.bind(this)} 
     className="emal-submit" 
     > 
     <input type="email" placeholder="[email protected]" /> 
     <button>Sign Me Up!</button> 
     </form> 
    </div> 
    ); 
    } 
} 
export default createContainer(() => { 
}, EmailSubscription); 
+1

«обработчик методаПодписка не найдена» говорит, что ваш метод. Импортируйте файл методов в каталог сервера. –

+0

Спасибо за ваш комментарий, я забыл об этом! Я импортировал mailChimp.js в свой каталог сервера, и я получил следующую ошибку: «Исключение при вызове метода« handleSubscriber »Ошибка: ошибка совпадения: ожидаемый объект, получил нуль –

ответ

0

"method handlerSubscriber not found" is say that your method.

Импортируйте файл методы в каталоге сервера.

Exception while invoking method 'handleSubscriber' Error: Match error: Expected object, got null

Это исключение, которое вы получаете, поскольку подписчик должен быть объектом, но вы отправляете null от клиента. проверьте функцию, выбрасывающую это исключение.

+0

Спасибо, я только что решил проблему, и теперь она работает! Я обновляю сообщение с ответом !!! –