我想将服务器端集合发布到客户端。
在服务器端
MedicalCenters = new Mongo.Collection('medicalCenters');
Meteor.publish('medicalCenters',function () {
return MedicalCenters.find({});
});
我希望只有特定模板才能访问此集合。 Thefore,
在客户端
Template.doctor.onCreated(function () {
Meteor.subscribe('medicalCenters');
});
现在我可以从客户端模板传递数据,甚至可以写入服务端集合。但似乎订阅无效,因此,我无法在模板中显示收集数据。 (该集合未显示在蒙古国的meteortoys中)
我该如何解决这个问题?
答案 0 :(得分:2)
听起来您没有将集合定义代码放在客户端和服务器执行的公共位置。我正在做这个假设是因为你说集合本身在mongol
中不可见。
请记住,为了使发布/订阅工作,集合必须存在于客户端(使用minimongo)和服务器端(使用mongodb)。
有关详细信息,请参阅Meteor Application Structure指南,但基本上您应将集合定义代码放在不在特殊目录(例如server/
或client/
文件夹中的文件中)。这样做可确保代码由客户端和服务器执行(根据meteor api docs)。
特殊目录之外的所有JavaScript文件都在客户端和服务器上加载。
在较旧的流星时代(在我们拥有imports/
文件夹之前),人们经常将其集合定义代码放在流星项目根目录下的lib/
文件夹中。现在,它常见于here所述的import/api/
目录中。
答案 1 :(得分:0)
尝试添加帮助程序以将数据发送到模板:
(defun pozpar3 (lst)
(if (endp lst)
'()
(cons (car lst) (pozpar3 (cddr lst)))))
然后在您的模板中,您可以遍历医疗中心
Template.doctor.helpers({
medicalcenters() {
return MedicalCenters.find();
}
});