繁体   English   中英

如何搜索FS集合?

[英]How to search over an FS Collection?

有人可以帮我吗? 我有一组想要搜索的PDF文档。 我尝试使用matteodem:easy-search和meteorhacks:search-source,但是它们两者都只能处理Meteor Collections,而不能处理FS。 我可以使这两个软件包都使用常规文本。 我只想根据FS集合中的名称字段返回搜索查询的结果。

任何帮助将不胜感激!

  1. 如果尚未安装react-var和react-dict软件包,请安装
  2. 创建一个反应式变量(也可以是一个Session变量) searchString
  3. 将项目显示内容包装在{{#each chosenFiles}} ,其中chosenFiles是您的助手名称。
  4. 创建一个helper chosenFiles助手,您可以在其中调用搜索功能,并从文件集合中为其提供光标。

     "chosenFiles": function() { return filterFiles(yourFileCollection.find()); } 
  5. 创建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; }; 
  6. 例如,将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.

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