[英]How to search over an FS Collection?
有人可以帮我吗? 我有一组想要搜索的PDF文档。 我尝试使用matteodem:easy-search和meteorhacks:search-source,但是它们两者都只能处理Meteor Collections,而不能处理FS。 我可以使这两个软件包都使用常规文本。 我只想根据FS集合中的名称字段返回搜索查询的结果。
任何帮助将不胜感激!
Session
变量) searchString
{{#each chosenFiles}}
,其中chosenFiles
是您的助手名称。 创建一个helper chosenFiles
助手,您可以在其中调用搜索功能,并从文件集合中为其提供光标。
"chosenFiles": function() { return filterFiles(yourFileCollection.find()); }
创建filterFiles
函数,基本上,在filterFiles
函数中,您将获取searchString
并使用其过滤结果,如果searchString
为空,则返回所有内容。 这是一个使用react-dict的示例:
var pageSession = new ReactiveDict(); filterFiles= function(cursor) { if(!cursor) { return []; } var searchString = pageSession.get("SearchString"); var raw = cursor.fetch(); // filter var filtered = []; if(!searchString || searchString == "") { filtered = raw; } else { searchString = searchString.replace(".", "\\\\."); var regEx = new RegExp(searchString, "i"); var searchFields = ["original.name", "original.type"]; filtered = _.filter(raw, function(item) { var match = false; _.each(searchFields, function(field) { var value = (getPropertyValue(field, item) || "") + ""; match = match || (value && value.match(regEx)); if(match) { return false; } }) return match; }); } return filtered; };
例如,将searchString
定义附加到keyUp
事件,以便获得响应式搜索。
"keyup .yourTextBox": function(e, t) { var searchString = e.currentTarget.value; switch (e.which) { //pressing esc clear the textbox case 27: e.currentTarget.value = ""; pageSession.set("SearchString", ""); break; default: pageSession.set("SearchString", searchString); }
我不是100%肯定“original.name”是访问name字段,因为我不使用collectionFS正确的方式,但它似乎是, 根据DOC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.