如何删除Meteor中的文档

时间:2015-07-29 16:39:12

标签: javascript meteor

如何删除Meteor中的文档。我收到此错误

  

"未捕获错误:不允许。不受信任的代码只能删除   ID的文件。 [403]"

list.js

 Template.KullaniciListele.events({
    'click #delete': function (id, template) {
     Meteor.users.remove({_id:id});
    }
  });

users.html

{{#each kullaniciList}}
  <tr>
   <td><a href="javascript:;" id="delete" >delete</a>
  </tr>
 {/each}}

1 个答案:

答案 0 :(得分:2)

Event callbacksevent个对象作为其第一个参数。所以你的代码就是这样做的:

Meteor.users.remove({_id: event});

由于event不是字符串,因此您收到错误消息。假设kullaniciList中的每个项目都包含_id(他们是用户吗?),那么您的代码可能如下所示:

Template.KullaniciListele.events({
  'click .delete': function (event) {
    event.preventDefault();
    Meteor.users.remove(this._id);
  }
});

请注意,您在页面上只能有一个#delete ID,因此我将其切换为一个类。模板中的相应行应为:

   <td><a href="#" class="delete">delete</a></td>

请注意,您也错过了结束</td>

如果您删除了insecure软件包,则需要添加allow rule或写一个method以便用户删除才能真正成功。只是为了看到一些有用的东西,你可以这样做:

if (Meteor.isServer) {
  Meteor.users.allow({
    remove: function(userId, doc) {
      // JUST FOR TESTING - NEVER DO THIS IN PRODUCTION
      return true;
    }
  });
}

警告!! 这只是为了让一些工作正常 - 请不要将其添加到生产代码中,因为它允许任何用户删除任何其他用户。要做到这一点,您需要确保来电者是管理员或其他什么,但这超出了此问题的范围。