Meteor Publish Composite不与Iron Router一起使用

时间:2015-02-12 13:50:47

标签: meteor iron-router

我在Meteor中尝试reywood:publish-composite软件包,并没有取得基本的成功。模板不显示从MongoDB Collection中提取的字段。

/server/publish.js

Meteor.publishComposite("PDetail", function(pShortname) {
  console.log("Browser asked to subscribe to PDetail with: " + pShortname);
  return {
    find: function() {
      return Proj.find( {shortname: pShortname} );
    }
  }
});

/collections/collections.js

Proj = new Mongo.Collection('proj');

/client/app.js

Router.route('proj', {
  path: '/proj/:shortname',
  template: 'proj',
  waitOn: function() {
    return Meteor.subscribe('PDetail', this.params.shortname);
  }
});

/client/proj/proj.html

<template name="proj">
  <h1>Name: {{pname}}</h1>
</template>

我得到的只是姓名:没有pname值。

我确认MongoDB数据库确实有与shortname查询匹配的Collection数据,而pname确实有一个值。在服务器上,我确实看到一个成功的“浏览器要求订阅”console.log消息,其中传递了短名称(上面显示的console.log)。

我认为我正确地遵循了发布复合文档,但在添加Iron Router时,事情变得有些模糊。任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:0)

您的路线功能需要返回数据上下文;

Router.route('proj', {
  path: '/proj/:shortname',
  template: 'proj',
  waitOn: function() {
    return Meteor.subscribe('PDetail', this.params.shortname);
  }
  data: Proj.findOne({shortname: this.params.shortname});
});