如何删除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}}
答案 0 :(得分:2)
Event callbacks将event
个对象作为其第一个参数。所以你的代码就是这样做的:
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;
}
});
}
警告!! 这只是为了让一些工作正常 - 请不要将其添加到生产代码中,因为它允许任何用户删除任何其他用户。要做到这一点,您需要确保来电者是管理员或其他什么,但这超出了此问题的范围。