gpt4 book ai didi

javascript - 搜索不清除过滤器

转载 作者:行者123 更新时间:2023-12-03 10:27:39 24 4
gpt4 key购买 nike

我需要在文本字段(mongodb)上进行搜索。集合上的搜索条件/过滤器可以是字段中字符串的任何子字符串。我将过滤器(输入)保存在 session 变量中。过滤器似乎在 session 变量为空后第一次工作。第一次搜索后,当我输入新的(现有的!)值时,我没有得到任何结果。如果我清除过滤器,请按 Enter 键,然后重新输入过滤器,我会得到结果。我认为我的代码不是最优的。有人可以评论一下并提出建议吗?

这是我所拥有的:

html:

<input class="medinput" maxlength="80" type="text" name="nameSearchBar" id="nameSearchBar"  value="{{searchText}}">

JavaScript:

Session.setDefault('searchText', null);

Template.questions.helpers({
questions:function(){
if ((Session.get('searchText') === null) || (Session.get('searchText') === '')) {
Session.get('searchText',null);
return Questions.find({archived:{$ne:true}});
} else {
var searchText = Session.get('searchText');
Session.get('searchText',null);
return Questions.find( { $and: [ { archived: { $ne: true } }, {note:{$regex: (".*"+searchText+".*") } } ] } )
}
},
searchText:function(){
return Session.get('searchText');
}
})


Template.questions.events({
"change #nameSearchBar":function(event){;
searchText = event.target.value;
Session.set('searchText', searchText);
}
})

问题:

  • 为什么我需要先“输入”一个空字符串才能获得有效结果
  • 这是一个好的程序吗?按回车键不会对 react 起作用方法?我认为输入完整页面后会重新发送?
  • 检查 ASCII 27 和 13 的“keyup”会更好吗?
  • 在我看来,正则表达式有效,有什么问题吗?我喜欢查找过滤器中输入的任何子字符串,即使过滤器有空格也是如此。
  • 这是全文搜索,我需要在 mongodb 端进行一些设置吗?
  • 开放问题:已经预构建实现 - 我不需要重新发明轮子...

最佳答案

这是我的解释,或者我可能如何构建它:

Template.questions.helpers({
questions:function(){
var searchText = Session.get('search-text');
if(searchText && searchText != '') {
return Questions.find({$and: [{archived: {$ne: true}}, {note:{$regex: (".*"+searchText+".*")}}]});
} else {
return Questions.find({archived: {$ne: true}});
}
}
});

Template.questions.events({
"keyup #nameSearchBar": _.throttle(function(event){
searchText = event.target.value;
Session.set('searchText', searchText);
}), 500)
});

对我来说,似乎没有必要设置默认值或调用 Session.get('search-text', null)。您还将看到我的代码如何更加简洁。 keyup 在这里作为事件可能也更有效。

注意_.throttle 是一个 underscore.js 函数,它将限制 Session 变量仅每 500 毫秒更改一次,而不是不断更改。这有助于节省不必要的服务器负载。

两个在 Meteor 开发人员中流行的预构建包值得研究:Easy SearchSearch Source

关于javascript - 搜索不清除过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com