javascript - 使用 Meteor 实现最简单的搜索

标签 javascript mongodb meteor

我是 Meteor 的新手,正在尝试向该网站添加一个非常简单的搜索功能。我知道 SO 上也有类似的问题,但答案并不适用。

搜索栏位于标题中。我已订阅并发布了搜索。但我不明白这之后会发生什么。如何从搜索栏发送数据以便搜索数据库。那么,需要在 header.js 中添加什么才能搜索数据库。

下面是相关代码。

header.js

Template.header.events({
  'submit form': function(e) {
    e.preventDefault();
    var query = $(e.target).find('[name=search]').val();

    ***** What should I add here? *****

    Router.go('searchResults');
  }
});

搜索结果.html

<template name="searchResults">
  <ul>
    {{#each questions}}
      <li>{{questionItems}}</li>
    {{/each}}
  </ul>
</template>

出版物.js

Meteor.publish('searchResults', function(searchValue) {
  return Questions.find({
    body: {
      $regex: searchValue
    }
  });
});

路由器.js

Router.route('/searchResults', {
  name: 'searchResults',
  waitOn: function() {
    return [Meteor.subscribe('searchResults')];
  }
});

最佳答案

由于您使用路线来显示搜索结果,因此您只需将搜索字符串传递给路线即可。例如:

Template.header.events({
  'submit form': function(e) {
    e.preventDefault();
    var query = $(e.target).find('[name=search]').val();
    Router.go('/searchResults/'+query);
  }
});

然后在你的 route :

Router.route('/searchResults/:searchValue', {
  name: 'searchResults',
  waitOn: function() {
    return [Meteor.subscribe('searchResults',this.params.searchValue)];
  },
  data: function(){
    return Questions.find();
  }
});

无论如何,您的出版物已经在期待该查询字符串,因此您应该可以开始了!

关于javascript - 使用 Meteor 实现最简单的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998550/

相关文章:

javascript - 如何从嵌入式数组中删除对象?

node.js - 如何向 Meteor 中当前登录的用户添加外部服务数据

javascript - 我如何解决此语法错误 : Unexpected token (1:13)?

javascript - 如何在 jQuery 中的单个保存按钮上更新数据和添加数据?

javascript - 是否可以在一段时间后关闭确认框?

mongodb - 了解新的 mongo id 并将其与 iron-router 一起使用

mysql - Mongo - MySql 之间喜欢

ios - 如何为 Meteor iOS 集成编辑 Xcode 项目?

javascript - Meteor 应用程序呈现不稳定的 spiderable

javascript - 通过 &lt;script&gt; 在书签中加载 jQuery 和 jQueryUI 时出现范围或计时问题?