неопределенная ошибка сбора при использовании простой схемы и реакции (приложение метеора)

Я использую метеор 1.4 и реагирую на создание веб-сайта опроса/голосования и использую простую схему в коллекции. но когда я подписываюсь на свою коллекцию в реагирующем компоненте, я получаю эту ошибку в консоли Chrome: Uncaught TypeError: Cannot read property 'find' of undefined.

вот файл коллекции:

import { Mongo } from 'meteor/mongo';
import {SimpleSchema} from 'meteor/aldeed:simple-schema';

const Polls = new Mongo.Collection('polls');
Polls.schema = new SimpleSchema({
   createdAt: {
    type: Date,
    autoValue: function() {
        return new Date()
    }
},
question: {
    type: String
},
answers: {
  type: [String]
},
ownerId: {
    type: String,
    autoValue: function() {
        return this.userId
    }
},
votes: {
    type: [Number]
}
});



Meteor.methods({
'poll.new': function() {
    return Polls.insert({});
},

'poll.remove': function(poll) {
    return Polls.remove(poll);
},

'poll.update': function(poll, question, answers) {
    // db.users.update({"username": "tom"}, {"$set": {"documents": []}})
    return Polls.update(poll._id, { $set: { question }}, { $push: {answers: { $each: answers }} });
},

'poll.vote': function(poll, vote) {
    return Polls.update(poll._id, {$push: { vote } });
}
});

export default Polls;

и вот компонент реакции:

import React, { Component } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
import { Link } from 'react-router';
import { Polls } from '../../../imports/collections/polls';

class PollsList extends Component {
  render() {
      return (
          <div>
           {this.props.polls.map(poll => {
                const { question } = poll;
                <Link to= {`/polls/vote/${poll._id}`} key={ poll._id }> {       question } </Link>
               })}
          </div>
       );
    }
 }

export default createContainer(() => {
     Meteor.subscribe('polls');
     return { polls: Polls.find({}).fetch() };
 }, PollsList);

и вот код публикации внутри сервера:

import { Meteor } from 'meteor/meteor';
import { Polls } from '../imports/collections/polls';

Meteor.startup(() => {
Meteor.publish('polls', function() {
  return Polls.find({});
});

Meteor.publish('myPolls', function() {
  return Polls.find({ownerId: this.userId});
});
});

так как я не получаю никаких ошибок внутри моего cmd, я не могу понять, в чем здесь проблема.


person Babak Gohardani    schedule 15.11.2016    source источник


Ответы (1)


Если эта ошибка не появляется на сервере, сосредоточьтесь на дебюте вашего кода на компоненте реакции в этой строке.

return { polls: Polls.find({}).fetch() };

Похоже, опросы не определены, проверьте также путь импорта опросов

import { Polls } from '../../../imports/collections/polls';

Надеюсь, это поможет.

person Danilo Miranda    schedule 15.11.2016
comment
Одной проблемой меньше :) - person Danilo Miranda; 16.11.2016