Метеор: ошибка при отображении данных в шаблоне - PullRequest
0 голосов
/ 21 октября 2018

Я новичок в Meteor, и у меня возникает эта ошибка, когда я пытаюсь отобразить список предметов из коллекции mongodb.

error

Это данные, которые я пытаюсь получить из моей rewards коллекции

rewards collection

И это мой код:

server / publishing.js

Rewards = new Mongo.Collection('rewards');

Meteor.publish('allRewards', function () {
    if (this.userId) {
        return Rewards.find({}, {
            fields: {
                'title': 1,
                'headline': 1,
                'summary': 1,
                'description': 1,
                'requirements': 1
            }
        })
    } else {
        this.ready()
    }
});

lib / router.js

Router.route('/rewards', function () {

    var selfRoute = this;

    var rew = RewardsSubs.subscribe("allRewards");
    document.title = "Rewards"

    Tracker.autorun(function (computation) {
        if (RewardsSubs.ready()) {
            selfRoute.render('rewards', {
                data: function () {
                    return {
                        rewards: rew
                    };
                }
            });
            computation.stop()
        } else {
            selfRoute.render('loading');
        }
    });
});

клиент / запуск / default.js

RewardsSubs = new SubsManager({
    // maximum number of cache subscriptions
    cacheLimit: 10,
    // any subscription will be expire after 5 minute, if it's not subscribed again
    expireIn: 10
});

клиент / шаблоны / награды/rewards.html

<template name="rewards">
    <div class="ui container">
        <table class="ui very basic table">
            <tbody>
                {{#each rewards}}
                <tr>
                    <td>
                        <span>{{title}}</span>
                    </td>


                    <td>
                        <h4 class="ui image header">
                            <div class="content">
                                <div class="header">
                                    . <span>{{headline}}</span>
                                    . <span>{{summary}}</span>
                                </div>
                            </div>
                        </h4>
                    </td>

                </tr>
                {{/each}}
            </tbody>
        </table>
    </div>
</template>

Я не знаю, почему у меня это "{{#each}} в настоящее время принимает только массивы, курсоры или значения Falsey." ... Я ценю любую помощь, чтобы решить эту проблемупроблема.

1 Ответ

0 голосов
/ 21 октября 2018

РЕШЕНИЕ : Я наконец-то нашел ошибку.Проблема заключалась в том, что я ссылался на коллекцию Rewards до загрузки server/publications.js, поэтому коллекция Rewards еще не была создана.

Во-первых, я изменил router.js, как предложено @iiro накомментарии.

lib / router.js

Router.route('/rewards', function () {

    var selfRoute = this;

    RewardsSubs.subscribe("allRewards");
    document.title = "Rewards"

    Tracker.autorun(function (computation) {
        if (RewardsSubs.ready()) {
            selfRoute.render('rewards', {
                data: function () {
                    return {
                        rewards: Rewards.find()
                    };
                }
            });
            computation.stop()
        } else {
            selfRoute.render('loading');
        }
    });
});

Затем я изменил коллекцию наград с server/publications.js на папку lib

lib / collection /rewards.js

Rewards = new Mongo.Collection('rewards');

Эта проблема была связана с Порядок загрузки файлов по умолчанию в Meteor

...