美好的一天,
我尝试使用简易搜索包创建一个简单的搜索功能。
简而言之,我做了以下事情 -
在客户端上定义架构和索引:
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;
现在由于某些原因,这不会起作用,它对模板没有任何作用,我&#39;非常新的,非常感谢一些帮助。
感谢你。
答案 0 :(得分:0)
从您的代码示例中,您似乎尝试全局引用Patients
和PatientsIndex
。假设您在共享客户端/服务器位置(例如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;
}
});