2016-11-14 2 views
0

я продолжаю получать эти сообщения об ошибках в моем браузере консоли:
Почему никакие коллекции не определены после их публикации?

Exception in template helper: ReferenceError: "CollectionNames" is not defined 

The «CollectionNames» будучи все коллекции у меня есть в моем приложении. Я исследовал, но не смог найти подходящее решение.

Моя среда:
Я бегу метеор 1.2

task.js файл, где я определяю каждую коллекцию. Ниже приведен код в task.js

/myMeteorApp
-/импорт/API/tasks.js

import { Mongo } from "meteor/mongo"; 
import { Template } from 'meteor/templating'; 
import { ReactiveVar } from 'meteor/reactive-var'; 

Images = new FS.Collection("images", { 
stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})] }); 

buyList = new Mongo.Collection("BuyList"); 

WhoAreWe = new Mongo.Collection("whoDb"); 
merchantReviews = new Mongo.Collection("merchantReviews"); 

Messages = new Meteor.Collection("messages", {transform: function (doc) 
{ doc.buyListObj = buyList.find({sessionIDz: {$in: [doc.buyList]}}); return doc; }}); 

Сервер, где я публикую коллекции. Ниже приведен код:
/myMeteorApp
-/сервер/main.js

import buyList from '../imports/api/tasks.js'; 
import Messages from '../imports/api/tasks.js'; 
import Images from '../imports/api/tasks.js'; 
import WhoAreWe from '../imports/api/tasks.js'; 
import merchantReviews from '../imports/api/tasks.js'; 

Meteor.startup(() => { 
// code to run on server at startup 

Meteor.publish('buyList', function(){ 
return buyList.find(); 
}); 


Meteor.publish('Messages', function(){ 
return Messages.find(); 
}); 

Meteor.publish('Images', function(){ 
return Messages.find(); 
}); 


Meteor.publish('WhoAreWe', function(){ 
return WhoAreWe.find(); 
}); 

Meteor.publish('merchantReviews', function(){ 
return merchantReviews.find(); 
}); 

}); 


И клиент, где я подписываюсь для коллекций. Найдите ниже код:

/myMeteorApp
-/клиент/main.js

import { Template } from 'meteor/templating'; 
import { ReactiveVar } from 'meteor/reactive-var'; 
import './main.html'; 

Meteor.subscribe('Messages'); 
Meteor.subscribe('WhoAreWe'); 
Meteor.subscribe('Images'); 
Meteor.subscribe('buyList'); 

Где я буду неправильно. Я уже много лет пробовал ... Прошу помощи!

+0

Вы говорите: «The CollectionNames» - это все коллекции, которые у меня есть в моем приложении. Я исследовал, но не могу найти подходящее решение ». - но он не отображается в коде, который вы указали, - появляется ли он где-то еще? – Mikkel

+1

Если вы по-прежнему используете одну и ту же структуру из своего другого вопроса, ваши операторы импорта (и экспорта) ошибочны. Взгляните на [его документацию] (https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export). – MasterAM

+0

@Mikkel Извините, что вы недостаточно прозрачны. Сообщение об ошибке появляется в браузере Консоль: «Исключение в помощнике шаблона: ReferenceError: Сообщения не определены» и «Исключение в помощнике шаблона: ReferenceError: buyList не определено» и 'Исключение в помощнике шаблона: ReferenceError: WhoAreWe не определен 'Кроме того, в терминале я также вижу это сообщение об ошибке:« Исключение из вспомогательных сообщений id HSFGnGG4eNrpG3Mo7 TypeError: Messages.find не является функцией ' – SirBT

ответ

1

Коллекция должна быть определены на оба клиент и сервер! Просто импортируйте ваши имена сбора на стороне клиента, а также сервера:

import { buyList, Messages, Images, WhoAreWe, merchantReviews } from '../imports/api/tasks.js'; 

Вы все еще должны подписаться к различным публикаций конечно.

0

Это проблема присвоения имен, когда вы публикуете коллекции, вы должны указать имя коллекции (сообщения), а не переменная метеор (сообщения)

Meteor.publish('messages', function(){... 
Смежные вопросы