繁体   English   中英

在流星应用中将变量传递给mongodb查询

[英]passing variable to mongodb query in meteor app

因此,我正在尝试使用一个简单的流星应用程序来搜索数据库。 我只有一个输入框,可以从其中输入以下代码进行搜索查询:

Template.search.events = {
'keydown input#search' : function (event) {
    if (event.which == 13) {
        var item = document.getElementById('search');
        Template.results.results(item.value)    
        //console.log(item);    
        item.value = '';
    }
}
}

我将搜索查询传递给另一个函数,该函数应该查询mongodb并将结果打印在模板中:

Template.results.results = function (item) {
return Products.find({sku: item});
}

但是,它永远找不到商品! 如果我在Chrome浏览器的控制台中运行相同的查询,则可以正常运行。 如果我将代码中的{sku:item}替换为(例如){sku:“ A2277”}(在我的数据库中),那么它将起作用! 如果我在Template.results.results函数内创建一个新变量,例如var item =“ A2277”,它也可以工作。 这里发生了什么?!

模板助手被设计为由您的模板而不是由事件处理程序直接调用。 您的代码仅要求查询发生并返回值,但它与模板没有任何关系。 相反,您应该使用如下会话变量:

Template.results.results = function() {
  return Products.find({sku: Session.get('itemSku')});
};

然后,在事件处理程序中,您可以执行以下操作:

Template.search.events({
  'keydown input#search': function(event) {
    if (event.which === 13) {
      var $item = $('#search');
      Session.set('itemSku', $item.val());
      $item.val('');
    }
  }
});

注意,我在这里使用jQuery来设置/获取项目值。 无论如何,那应该设置会话变量并以反应方式重绘结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM