Meteor:根据URL参数

时间:2016-04-01 10:18:24

标签: meteor meteorite meteor-autoform meteor-helper

我正在尝试从名为“Babysitters”的模式/集合中显示保姆的独特个人资料(即:保姆用户名,城市,邮政编码等...)。

网址正确包含了保姆唯一的_id,例如:

  

http://localhost:3000/test/PqMviBpYAmTA2b5ec

但我无法检索所有其他字段。

meteor question - screenshot

我尝试在两个文件中查询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文件中。

感谢您的帮助,这里有新手。

ķ。

1 个答案:

答案 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(),因为发布需要返回游标或游标数组,而不是对象