【问题标题】:How can I remove a docments in Meteor如何在 Meteor 中删除文档
【发布时间】:2015-07-29 16:39:12
【问题描述】:

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

“未捕获的错误:不允许。不受信任的代码只能删除 身份证件。 [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}}

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    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>
    

    请注意,您还漏掉了结尾的 &lt;/td&gt;


    如果您已删除 insecure 软件包,则需要添加 allow rule 或编写 method 以使用户删除真正成功。只是为了看到一些工作,你可以这样做:

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

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

    【讨论】:

    • 我应用了您的代码,但出现此错误“删除失败:访问被拒绝。不允许为方法 'remove' 的受限集合设置验证器。”
    • 您需要一个允许规则或方法。查看更新的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2012-04-30
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多