Meteor JS使用_id

时间:2015-09-11 18:22:50

标签: javascript node.js mongodb meteor

我试图通过传递对象的_id来从服务器端通过Meteor.methods从集合中删除单个文档,但它不是删除对象,也尝试了该文档中的其他字段但没有去。

我也尝试过FoodCategory.remove(removeID);这也行不通。

文件1 - displayCategorySection.html

          <template name="categoryDisplaySection">
                <div class="row categoryDisplay">   
                    <div class="col-md-10 col-lg-10 ">
                        {{Category}}
                    </div>
                    <div class="col-md-2 col-lg-2 pull-right">
                        <i class="fa fa-minus-square"></i>
                    </div>
                </div>
                <div class="row  "> 
                    <div class="col-md-12 col-lg-12 identity">
                        {{_id}}
                    </div>          
                </div>
            </template>

在.JS文件中,我将此_id传递给Meteor方法deleteFoodCategory

文件2 - categoryDisplaySection.js

           Template.categoryDisplaySection.events({
              'click .fa-minus-square':function(evt,tmpl) 
              {                 
                  var remove_id = tmpl.$(".identity").text();
                  alert(remove_id);
                  /*****Server side call for document remove *****/
                  Meteor.call("deleteFoodCategory",remove_id,
                  function(error,result)
                   {  alert(result);    });
              }         
           });

服务器端文件3 - FoodCategorySection.js

包含deleteFoodCategory方法

            Meteor.methods({
            deleteFoodCategory: function(removeID)
            {
                    return FoodCategory.remove({
                                '_id'   : removeID
                        },
                        function(error,id)
                        {
                            if(id)  { return id;} else {    return error; }

                        });
            }
            });

如果我把_id放在&#34; RAEnLfomeqctuonnE&#34;代替变量removeID。我尝试过各种各样的选项,比如&#39; _id&#39;或者只是_id没有引号,无法弄清楚问题。请看看

2 个答案:

答案 0 :(得分:3)

_id文本中获取文档div是过度的,您可以使用当前的数据上下文:

Template.categoryDisplaySection.events({
  "click .fa-minus-square": function(evt,tmpl){
    var removeId = this._id;
    alert(removeId);
    Meteor.call("deleteFoodCategory", removeId);
});

在您的Meteor方法中,您只需将_id传递给Collection.remove

Meteor.methods({
  deleteFoodCategory: function(removeId){
    return FoodCategory.remove(removeId);
  }
});

答案 1 :(得分:1)

saimeunt提供的答案也正常工作,就原始问题而言,需要使用带有remove_id变量的.trim函数

文件2 - categoryDisplaySection.js

Scheduler

但正如@saimeunt所说从div文本中获取文档_id是过度的,所以从现在开始使用this_id