我正在尝试从名为“Babysitters”的模式/集合中显示保姆的独特个人资料(即:保姆用户名,城市,邮政编码等...)。
网址正确包含了保姆唯一的_id,例如:
但我无法检索所有其他字段。
我尝试在两个文件中查询MongoDB:routes.js和模板test.js
在routes.js中1)
Router.route('/test/:_id', {
name: 'test',
data: function () {
return Babysitters.findOne({ _id: this.params._id });
}
});
2)在test.js
中Template.test.helpers({
data: function () {
//sitterusername = this.params.sitterusername;
//console.log(this.params._id );
return Babysitters.findOne( { _id: this.params._id });
}
});
html文件:test.html
<template name="test">
{{#with data}}
<ul>
<li><img src="/" {{photourl}} height="100" width="100" ></li>
<li>Babysitter username: {{ sitterusername }}</li>
<li>Presentation: {{ presentation }}</li>
<li>City: {{ city }}</li>
<li>Postal Code: {{ postalcode }}</li>
<li>Mother tongue: {{ mothertongue }}</li>
<li>Languages spoken {{ languagesspoken }}</li>
<li>Experience {{ experience }}</li>
<li>Homework help: {{ homeworkhelpavailable }}</li>
<li>Hourly wages: {{ hourlywages }} €/h</li>
</ul>
{{/with}}
</template>
我尝试了各种方法,但Collection字段从未出现在HTML文件中。
感谢您的帮助,这里有新手。
ķ。
答案 0 :(得分:0)
您很可能不会将所有Babysitters
发布到客户端,因此您的.findOne()
不会返回任何内容。
这是一种常见的路由器模式,您希望在其中显示通常不会发布的单个文档。在i-r中解决此问题的一种好方法是waitOn
订阅单个文档:
waitOn: function(){
return Meteor.subscribe('oneBabysitter', this.params._id);
}
在服务器上,发布:
Meteor.publish('oneBabysitter',function(_id){
return Babysitters.find(_id);
});
请注意,即使此发布只返回单个文档,您仍然需要执行.find()
而不是.findOne()
,因为发布需要返回游标或游标数组,而不是对象