流星集合没有加载

时间:2016-09-01 02:44:03

标签: javascript node.js mongodb meteor

所以,如果我通过 meteor mongo 进入数据库,当我输入 db.Questions.find({})。count(); 时,它返回值我有 1 女巫的问题是正确的但由于某种原因,我的代码无法正常工作,我该如何解决这个问题。

database.js

import { Mongo } from 'meteor/mongo';

Questions = new Mongo.Collection("Questions");

router.js

import '../imports/api/database.js';

FlowRouter.route('/', {
    action: function() {
        BlazeLayout.render('MainPage');

        console.log(Questions.find({}).count());

        if(Meteor.isClient) {
          Template.register.events({
            'submit form'(event, template) {
              event.preventDefault();

              const EmailConst = template.find('#email').value;
              const UsernameCost = template.find('#username').value;
              const PasswordConst = template.find('#password').value;

              Accounts.createUser({
                username: UsernameCost,
                email: EmailConst,
                password: PasswordConst
              });
            }
          });

          Template.login.events({
            'submit form'(event, template) {
              event.preventDefault();

              const UsernameCost = template.find('#login-username').value;
              const PasswordConst = template.find('#login-password').value;

              Meteor.loginWithPassword(UsernameCost, PasswordConst);
            }
          });

          Template.logout.events({
            'click #LogoutUser'(event) {
              event.preventDefault();
              Meteor.logout();
            }
          })
        };

        Template.createquestion.events({
          'submit form'(event, template) {
            event.preventDefault();

            const QuestionNewSub = template.find('#question-subject').value;
            const QuestionBody = template.find('#question-area').value;
            const QuestionId = Math.floor((Math.random() * 9999999999) + 1);
            const QuestionUsername = Meteor.user().username;
            const QuestionNewActive = true;
            const creationDate = new Date();

            Questions.insert({
              id: QuestionId,
              poster: QuestionUsername,
              subject: QuestionNewSub,
              content: QuestionBody,
              active: QuestionNewActive,
              createdAt: creationDate
            });

            console.log("Question posted!");

          }
        })

        Template.getquestions.helpers({

          results() {
            Questions.find({
              active: true
            }).count();
          },

        });

    }
});

FlowRouter.route('/social', {
    action: function() {
        console.log("Yeah! We are on the social route!");
    }
});

main.js

import { Meteor } from 'meteor/meteor';

Meteor.onConnection(function() {
  import '../imports/api/database.js';
});

1 个答案:

答案 0 :(得分:0)

如果我不得不这样做,你的问题可能与(不)发布/订阅有关。 https://www.meteor.com/tutorials/blaze/publish-and-subscribe

首先,在服务器上,您需要将要展示的Questions集合中的项目发布到模板中。

if (Meteor.isServer) {
  // This code only runs on the server
  Meteor.publish('questions', function questionsPublication() {
    return Questions.find();
  });
}

然后,在您的客户端代码中,您需要订阅该出版物:

Template.getquestions.onCreated(function() {
  Meteor.subscribe('questions');
});