找不到Meteor.call方法

时间:2014-11-21 07:03:20

标签: javascript methods meteor

我正在探索Discover Meteor的显微镜项目,我遇到了一个问题。我收到以下代码的“找不到方法”错误:

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 - 显微镜/客户端/ templates / posts / 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 个答案:

答案 0 :(得分:2)

您很可能需要将方法postInsert添加到服务器端。如果您在Discover Meteor中继续关注,他们会在下一部分中进行操作 - 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
    });