【问题标题】:MeteorJS insert function isn't workingMeteorJS 插入功能不起作用
【发布时间】:2015-09-01 16:47:51
【问题描述】:

我是流星新手,正在尝试制作一个简单的博客应用程序。但是我的插入功能似乎无法正常工作。这是我的代码。

这是我的模板

<template name="addpost">
  <div class="container">
    <h1> Add New Post</h1>
    <form class="new-post">
      <label class="title">
        Title:
        <input type="text" name="title" placeholder="Type to add new tasks" />
      </label>
      <label class="post-content">
        Write here:
        <input type="text" name="body" placeholder="Type to add new tasks" />
        <button class="add-post">Add Post</button>
      </label>

    </form>
  </div>
</template>

JS文件内容

Posts = new Meteor.Collection("posts");

if (Meteor.isClient) {

  Template.addpost.events({
    "submit .new-post": function(event){

      var title = event.target.title.value;
      var body = event.target.body.value;

      Meteor.call("addPost", title, body);
    }
  });
}


Meteor.methods({
  addPost: function(title, body){
    Posts.insert({
      title: title,
      body: body,
      createdAt : new Date()
    });
  }
});

我没有删除自动发布和不安全的软件包。以下是 mongoDB 查询输出。

【问题讨论】:

    标签: javascript meteor mongodb-query


    【解决方案1】:

    默认情况下,当您提交表单时,它会发出另一个 HTTP 请求,该请求将重新加载页面并停止流星正在执行的任何操作。为避免这种情况,您需要阻止默认操作:

    Template.addpost.events({
      submit: function(event) {
        event.preventDefault();
        // the rest of your code goes here
      }
    });
    

    除此之外,您的代码对我来说工作正常。您可以通过 Web 控制台中的 Posts.find().fetch() 或通过 meteor shell 进行验证。

    【讨论】:

    • Web 控制台现在显示“调用方法 'addPost' 时出错:找不到方法 [404]”
    • 在您发布问题后可能会引入一些错字,因为它对我来说很好用。如果您可以在meteorpad 上重现该问题或提供指向 github 存储库的链接,我可以再看看。
    • addPost 方法仅在客户端上定义。它需要位于共享目录(如lib)或server 下。前者会给你latency compensation
    • 知道了。谢谢@david-weldon。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    相关资源
    最近更新 更多