我正在Meteor中写一个小应用程序。我完成了添加类别的代码,但我不知道如何删除类别。 我在HTML中的代码是:
<template name="categories">
<h2>Stored Category</h2>
<div id="categories" class="btn-group">
{{#if new_cat}}
<div id="category">
<input type="text" id="add-category" value=""/>
</div>
{{else}}
<div class="category btn btn-inverse" id="btnNewCat">+</div>
{{/if}}
{{#if del_cat}}
<div id="category">
<input type="text" id="del-category" value=""/>
</div>
{{else}}
<div class="category btn btn-inverse" id="btnDelCat">−</div>
{{/if}}
{{#each lists}}
<div class="category btn btn-inverse">
{{Category}}
</div>
{{/each}}
</div>
添加类别的按钮显然是btnNewCat,删除是btnDelCat。 Javascript代码是:
Template.categories.lists = function () {
return lists.find({}, {sort: {Category: 1}});
};
Session.set('adding_category', false);
Session.set('deleting_category', false);
Template.categories.new_cat = function () {
return Session.equals('adding_category',true);
};
Template.categories.del_cat = function(){
return Session.equals('deleting_category',true);
};
Template.categories.events({
'click #btnNewCat': function (e, t) {
Session.set('adding_category', true);
Meteor.flush();
focusText(t.find("#add-category"));
},
'keyup #add-category': function (e,t){
if (e.which === 13)
{
var catVal = String(e.target.value || "");
if (catVal)
{
lists.insert({Category:catVal});
Session.set('adding_category', false);
}
}
},
'focusout #add-category': function(e,t){
Session.set('adding_category',false);
},
'click #btnDelCat': function (e, t) {
Session.set('deleting_category', true);
Meteor.flush();
focusText(t.find("#del-category"));
},
'keyup #del-category': function (e,t){
if (e.which === 13)
{
var catVal = String(e.target.value || "");
if (catVal)
{
alert(catVal);
lists.remove({Category:catVal});
Session.set('deleting_category', false);
}
}
},
'focusout #del-category': function(e,t){
Session.set('deleting_category',false);
}
我尝试使用 lists.remove({Category:catVal}); 删除。这是行不通的。我做错了什么?
谢谢,
eb_cj
答案 0 :(得分:2)
您只能通过_id
删除客户端中的项目,因此您需要执行以下操作:
var removeCat = lists.findOne({Category:catVal});
if (removeCat) lists.remove(removeCat._id);
在浏览器控制台中尝试这些内容应该表明您的代码原则上是否有效;如果您尝试lists.remove({Category:catVal})
,它应该会给您:
错误:不允许。不受信任的代码只能按ID删除文档。 [403]
但上面的代码应该有效。