Meteor.js - 在多个集合上进行用户搜索的方法

2023-12-24

关于如何在 Meteor 应用程序中设置集合,我遇到了一些困境。用户搜索栏是我的应用程序的核心部分,用户需要能够输入一个搜索并在多个不同的集合中获得结果:

user query : 'foo'

var query = 'foo';
var actors_results = Actors.find({ $or : [{ name : query}, { actor_biography : query }] );
var films_results = Films.find({ $or : [{ name : query}, { description : query }] );
var cinemas_results = Cinemas.find({ $or : [{ name : query}, { genres : query }] );

对于搜索结果显示,这不好 - 我不认为(???)我可以将这些光标组合成一个光标,因此像分页这样简单的事情几乎不可能做到(或者我不知道如何做到这一点) )。

我知道的唯一解决方案是创建一个 SuperCollection,在其中放置所有文档并有一个字段“类型”,可以是“演员”、“电影”或“电影”,然后分页等就变得很容易。

但在我看来,这确实使其他一切变得复杂......数据库的结构不再反映数据。演员和电影院在数据/结构方面没有任何共同点,我只需要能够并行搜索它们。

另外,我将如何根据字段“type”的值为 SuperCollection 设置多个验证方案?

任何想法/建议非常感谢!


好的,我已经找到了一种方法来做到这一点,而无需重新完成整个数据库。流星棒极了!

在服务器上:

Meteor.publish('search_results', function(query){
    if(query){
        var self = this;
        var actors = Actors.find({ $or : [{ name : query}, { actor_biography : query }] ),
        films = Films.find({ $or : [{ name : query}, { actor_biography : query }] ),
        cinemas = Cinemas.find({ $or : [{ name : query}, { actor_biography : query }] );
        actors.forEach(function(doc){
            self.added('search_collection', doc._id, { name : doc.name, type : 'actor' });
        });
        films.forEach(function(doc){
            self.added('search_collection', doc._id, { name : doc.name, type : 'film' });
        });
        cinemas.forEach(function(doc){
            self.added('search_collection', doc._id, { name : doc.name, type : 'cinema' });         
        this.ready();
    } else {
        this.ready();
    }
});

在客户端:

Deps.autorun(function(){
    Meteor.subscribe('search_results', Session.get('currentQuery'));
});

SearchCollection = new Meteor.Collection('search_collection');

现在,SearchCollection 包含我想要从结果中获得的数据,我可以在其中分别决定想要从每个集合中获得哪些数据。

一个缺点是我显然在重复数据 - 一些(如果不是全部)这些记录已经存在于客户端上......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Meteor.js - 在多个集合上进行用户搜索的方法 的相关文章

随机推荐

  • 一种数据结构,其中键为单词簇,值为单个单词或字符串

    我想创建一个能够将一组或一组单词映射到单个单词或字符串的数据结构 它可以被认为是 python 中字典的反向操作 您可以使用常规字典 targetword good wordmap best targetword positive targ
  • PHP MYSQL 博客存档菜单(按年和月)

    我正在寻找一种有效的方法将所有博客文章整理到以下格式的菜单中 2012 八月 6 九月 4 十月 2 Month 代表月份 显然 括号内的值代表该月的帖子数 单击后 将搜索该月 该年的所有帖子 我需要它是动态的 当该月创建帖子时自动选取 1
  • useSWR 不适用于异步获取器功能

    我正在使用 SWR 获取数据来填充表 我正在使用以下代码 const data items error useSWR fetchAllItems name fetchAllItems fetcher 函数看起来像这样 async funct
  • graphql查询SQL父子关系

    我有一个 postgres 表 它表示具有父子表的层次结构 表 类别 id name parentId 1 CatA null 2 CatB null 3 CatC 1 4 CatD 1 5 CatE 3 期望的结果 categories
  • 如何使用字典从嵌套 json 创建 pandas 数据框

    我正在尝试创建一个 pandas 数据框形式的 json 文件 我已经看到了这个问题的多种解决方案 它们使用内置函数 from dict json normalize 但我无法将其应用到我的代码中 以下是我的数据在 json 文件中的结构
  • DotNetOpenAuth:如何实现一个简单的 OpenId 提供程序?

    每个 OpenId 提供商都有一个提供商 Url 例如 Google https www google com accounts o8 id https www google com accounts o8 id Using OpenIdR
  • 如何在表单中放置两个提交按钮

    我在一种表单中有两个提交按钮 我想在两个按钮中调用不同的操作 有没有什么方法可以在不使用 JavaScript 的情况下完成此任务 如果没有 JavaScript 就不可能调用不同的操作 您可以调用相同的控制器操作 并在该操作内使用 nam
  • Apache POI XWPF:如何创建一组线?

    我是 Poi 的新手 我尝试用画线制作一组形状复合材料 在 LibreOffice 文档上我可以制作 但使用 Poi 似乎更困难 例子 里面没有关于形状的内容apache poi s XWPF除了到目前为止的图表 但是还有com micro
  • 循环遍历 Ruby on Rails 中的对象属性

    Rails 中是否可以循环对象的属性 我有一个对象 而不是对视图中的每个属性进行编码 我想在视图中输出它们中的每个属性 因为它们有很多 我有一个名为 work profile它有很多属性 主要是布尔复选框值 编辑 我知道我可以使用 work
  • 如何在专注于开发工具的同时在 Electron 应用程序中切换开发工具?

    我想让我的 Electron 应用程序切换开发人员工具以响应 F12 在渲染器页面中 我添加了 const currentWebContents require electron remote getCurrentWebContents w
  • 书店应用程序的推荐系统

    嘿 我正在尝试学习 Amazon com 等网站中使用的一些推荐算法 所以我有这个简单的 java spring hibernate postgres 书店应用程序 其中 Book 具有属性标题 类别 标签 作者 为了简单起见 书中没有任何
  • 在 R 中的 .Options$repos 中列出多个存储库有何影响或价值?

    我注意到这个答案 https stackoverflow com questions 1189759 expert r users whats in your rprofile 1349232 1349232关于 Rprofile 设置的问
  • 什么是文档类型?

    什么是 DOCTYPE 为什么要使用它 我可以使用哪些不同的 DOCTYPE 标准模式和怪癖模式之间有什么区别 使用不同设置的 DOCTYPE 可能会遇到哪些怪癖 最后 我应该使用的正确 DOCTYPE 是什么 基本上 DOCTYPE 描述
  • 此场景的 GUID/UUID?还是复合键?或其他

    我目前正在开发一个系统 在某些情况下 该系统需要白天在本地数据库上运行 然后在晚上复制到中央服务器 它cannot所有这些都从一个中央数据库运行 因为本地站点会定期与该数据库失去联系 中央服务器上的数据用于仅查看和报告在总部 因此不需要将任
  • 未定义的方法“link_to”

    我正在编写一个 ruby on rails 库模块 module Facets class Facet attr accessor name display name category group special URI controlle
  • iOS 7 中文本字段的弹出/模式选择器

    我在弄清楚如何实现标准弹出选择器时遇到了很多麻烦 就像许多应用程序的注册屏幕一样 当用户选择生日文本字段时 我希望出现一个弹出选择器 以便用户可以选择他们的生日 单击完成 格式化日期将添加到文本字段 这似乎并不那么困难 但在 iOS 7 中
  • 如何使用新的 Google Analytics 在 PHP 中获取当前访问者的引荐来源网址、付费/自然和关键字?

    我想了解访问者如何访问我的网站的信息 在 Google Analytics 的早期版本中 您可以使用他们的 cookie 参见例如使用 Google Analytics 获取当前访问者的引荐来源网址 付费 自然和关键字 https stac
  • 提交后的 mvc3 复选框值

    我有一个包含 2 个字段的表单 一个下拉列表和一个复选框 我一切正常 但由于某种原因 如果选中这是我的代码 我无法获取复选框的值 HttpPost public ActionResult view string pick switch pi
  • 切换 UITextView 中的 selectedRange 属性

    我创建了一个按钮 我想检查是否选择了文本 然后在点击时在 selectedRange 上切换粗体和非粗体 目前 我的代码只会将 selectedRange 更改为粗体 我无法撤消它或检查是否有选择 我怎样才能实现这个目标 func bold
  • Meteor.js - 在多个集合上进行用户搜索的方法

    关于如何在 Meteor 应用程序中设置集合 我遇到了一些困境 用户搜索栏是我的应用程序的核心部分 用户需要能够输入一个搜索并在多个不同的集合中获得结果 user query foo var query foo var actors res