两分钟后重复流星POST

时间:2017-07-17 15:12:31

标签: javascript meteor meteor-blaze

我需要维护一个Meteor项目,它基本上可以作为MongoDB数据库的入口数据。通过单击添加/更新按钮插入新记录时,会向服务器提交POST,并在MongoDB中创建新条目。到目前为止一切都很好。

POST /add_record HTTP/1.1 (application/x-www-form-urlencoded)

问题是,在没有任何用户操作的情况下,在两分钟后再次提交相同的POST,因此再次创建相同的记录。这种情况发生了三四次。 为什么这样,我怎么能避免呢?

服务器代码:

Records = new Meteor.Collection("records");

Meteor.startup(function() {
   Meteor.publish('records', function() {
      return Records.find()
   });
});

Router.route('/add_record', function() {
   if (this.request.method == 'POST') {
      data = this.request.body;
      Records.update({_id:data.id}, { created_at:(new Date()).getTime() , name:data.name, value:data.value}, {upsert:true});
   }
},{where:'server'});

客户代码:

<head>
   <title>Meteortest</title>
</head>

<body>
   <div id="outer">
      {{> meteortest}}
   </div>
</body>

<template name="meteortest">
   <div class="meteortest">
      <div id="group">
          <input type="hidden" id="record_id">
          <input type="text" id='record_name'>
          <input type="text" id="record_value">
          <input type='button' id="add_record" value="Add/Update Record">
          <table>
             {{#each records}}
               <tr>{{> record}}</tr>
             {{/each}}
          </table>
      </div>
   </div>
</template>

<template name="record">
   <div class="record {{selected}}">
      <td>{{name}}:&nbsp;{{value}}</td>
   </div>
</template>

Records = new Meteor.Collection("records");

Router.route('/', function() {
   this.render('');
});

Meteor.subscribe('records');

Template.meteortest.helpers({
   records: function() {
      return Records.find({}, {sort:{created_at:-1}})
   }
});

Template.meteortest.rendered = function() {
   $("#add_record").click(function() {
      $.post("/add_record",
        {id:$("#record_id").val(), name:$("#record_name").val(), value:$("#record_value").val()  });
      $("#record_name").val("");
      $("#record_value").val("");
   });
}

0 个答案:

没有答案