Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在meteor应用程序中将变量传递给mongodb查询_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript 在meteor应用程序中将变量传递给mongodb查询

Javascript 在meteor应用程序中将变量传递给mongodb查询,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,因此,我正试图开始使用一个简单的meteor应用程序来搜索数据库。我有一个单一的输入框,从中我可以得到带有以下代码的搜索查询: Template.search.events = { 'keydown input#search' : function (event) { if (event.which == 13) { var item = document.getElementById('search'); Template.results.results

因此,我正试图开始使用一个简单的meteor应用程序来搜索数据库。我有一个单一的输入框,从中我可以得到带有以下代码的搜索查询:

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来设置/获取项目值。无论如何,这应该设置会话变量并反应性地重新绘制结果