2014-11-21 4 views
1

Я работаю над проектом Microscope в Discover Meteor, и у меня есть проблема. Я получаю 'Метод не найден' ошибка для следующего кода:Метод Meteor.call не найден

HTML шаблон - микроскоп/клиент/шаблоны/сообщений/post_submit.html

<template name="postSubmit"> 
<form class="main form"> 

    <div class="form-group"> 
     <label class="control-label" for="url">URL</label> 
     <div class="controls"> 
      <input name="url" id="url" type="text" value="" placeholder="Your URL" class="form-control"/> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label class="control-label" for="title">Title</label> 
     <div class="controls"> 
      <input name="title" id="title" type="text" value="" placeholder="Name your post" class="form-control"/> 
     </div> 
    </div> 

    <input type="submit" value="Submit" class="btn btn-primary"/> 

</form> 

JS - микроскоп/клиент/шаблоны/сообщения/post_submit.js

Template.postSubmit.events({ 
    'submit form': function(e) { 
    e.preventDefault(); 

    var post = { 
     url: $(e.target).find('[name=url]').val(), 
     title: $(e.target).find('[name=title]').val() 
    }; 

    Meteor.call('postInsert', post, function(error, result) { 
     // display the error to the user and abort 
     if (error) 
      return alert(error.reason); 
      Router.go('postPage', {_id: result._id}); 
     }); 
    } 
}); 

Я не уверен, как отладить это, как я не подвожу никаких ошибок в консоли. Можете ли вы предложить, где я ошибаюсь?

+1

Убедитесь, что метод, называемый 'postInsert' в вашем коде на стороне сервера. Если он там, то передайте код на стороне сервера, чтобы было легко разобраться в проблеме. – Rajanand02

+0

Можете ли вы показать, как и где вы определяете свои методы? – waitingkuo

+0

Убедитесь, что вы добавили свой метод postInsert. Если вы не знаете, как посмотреть на метеорные документы. http://docs.meteor.com/#/basic/Meteor-methods. Если у вас есть метод, сообщите нам, что такое ваш метод, чтобы мы увидели, что вы сделали. –

ответ

2

Очень вероятно, что вам нужно добавить метод postInsert на сервер. Если вы следуете в Discover Метеор, они делают это в следующем разделе - https://book.discovermeteor.com/chapter/creating-posts

Например, вы кладете метод в файле с именем lib/collections/posts.js как этот

Meteor.methods({ 
    postInsert: function(postAttributes) { 
    check(Meteor.userId(), String); 
    check(postAttributes, { 
     title: String, 
     url: String 
    }); 
+1

Пожалуйста, подумайте над добавлением более подробной информации к вашему сообщению. Если ваши ссылки меняются или становятся недоступными, ваш ответ не будет полезен. – dckuehn

+0

Спасибо за предложение! –

Смежные вопросы