使用基于模板的订阅的meteor js在Mongo Db中显示单个项目

时间:2017-08-07 13:57:35

标签: javascript templates meteor publish-subscribe meteor-blaze

我不知道问题是什么,我有这个片段来显示单个项目,但它没有像假设的那样工作,我做了什么?

出版物文件:

Meteor.publish('SingleSchool', function (myslug) {
        check(myslug, String);
        if (!this.userId) {
            throw new Meteor.Error('Not authorized');
            return false;
        } else {
            return SchoolDb.find({slug: myslug});
        }
    })

模板基本订阅:

Template.view.onCreated(function () {
    var instance = this;
    instance.autorun(function () {
        var slug = FlowRouter.getParam('myslug');
        return Meteor.subscribe('SingleSchool', slug);
    });
});

路线:

FlowRouter.route('/school/:myslug', {
  name: 'view',
  action: function (params) {
    BlazeLayout.render('sidebarschool', {sidebars: 'view'});
  }
})

模板文件:

<template name="view">  
    {{#if currentUser}}
    {{#if Template.subscriptionsReady }}
        {{#if SingleSchool}}
            {{#with SingleSchool}}
                <p>{{varibablecalled}}</p>
            {{/with}}
        {{else}}
            <p>Loading...</p>
        {{/if}}
    {{/if}}
</template>

它进入了slug但没有显示其他内容的数据。路线中的slu is工作正常。routing with slug displays a blank page

1 个答案:

答案 0 :(得分:0)

您是否初始化了您尝试在模板中阅读的SingleSchool个收藏集?

另外,请不要忘记这是集合,因此您应该SingleSchool.findOne({slug:...})来获取所需的项目。

顺便说一下,你的模板文件看起来很混乱:两个<template...>标签。