使用EasySearch程序包

时间:2016-09-12 13:22:52

标签: mongodb meteor

美好的一天,

我尝试使用简易搜索包创建一个简单的搜索功能。

简而言之,我做了以下事情 -

在客户端上定义架构和索引:



const Patients = new Mongo.Collection('patients');

const PatientsIndex = new EasySearch.Index({
    collection: Patients,
    fields: ['name'],
    engine: new EasySearch.MongoDB()
  });




我已将以下值输入数据库:



meteor:PRIMARY> db.patients.find()
{ "_id" : ObjectId("57d6a9f71bad26ba07748f9d"), "name" : "Paul" }




在客户端创建模板助手:



Template.searchBox.helpers({
  patientsIndex: () => PatientsIndex
});




最后我创建了一个输出结果的模板:



<template name="searchBox">
    {{> EasySearch.Input index=patientsIndex }}
    <ul>
        {{#EasySearch.Each index=patientsIndex }}
            <li>Name of the patient: {{name}}</li>
        {{/EasySearch.Each}}
    </ul>
</template>
&#13;
&#13;
&#13;

现在由于某些原因,这不会起作用,它对模板没有任何作用,我&#39;非常新的,非常感谢一些帮助。

感谢你。

1 个答案:

答案 0 :(得分:0)

从您的代码示例中,您似乎尝试全局引用PatientsPatientsIndex。假设您在共享客户端/服务器位置(例如Patients)中有PatientsIndex/lib声明,那么您应该删除const关键字。这将确保这些声明在全球范围内可用,并允许您的模板使用它们。以下是您的代码的修改版本:

<强> /lib/collection.js

Patients = new Mongo.Collection('patients');

PatientsIndex = new EasySearch.Index({
  collection: Patients,
  fields: ['name'],
  engine: new EasySearch.MongoDB()
});

<强> /client/main.html

<body>
  {{> searchBox}}
</body>

<template name="searchBox">
  {{> EasySearch.Input index=patientsIndex }}
  <ul>
    {{#EasySearch.Each index=patientsIndex }}
      <li>Name of the patient: {{name}}</li>
    {{/EasySearch.Each}}
  </ul>
</template>

<强> /client/main.js

import { Template } from 'meteor/templating';
import './main.html';

Template.searchBox.helpers({
  patientsIndex() {
    return PatientsIndex;
  }
});