为什么 collections 中的任何一个在发布后都没有被定义?
Why aren't any of collections being defined after publishing them?
我的浏览器控制台中不断收到这些错误消息:
Exception in template helper: ReferenceError: "CollectionNames" is not defined
"CollectionNames" 是我应用程序中的所有 collection。我已经研究过但找不到合适的解决方案。
我的环境:
我是运行 meteor 1.2
task.js 文件是我定义每个 collection 的地方。下面是 task.js
中的代码
/我的流星应用
--/imports/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; }});
服务器是我发布 collection 的地方。下面是代码:
/我的流星应用
--/server/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();
});
});
而客户端是我订阅 collection 的地方。在下面找到代码:
/myMeteorApp
--/client/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');
我哪里错了。我已经在这里待了很多天了......请帮忙!
这是一个命名问题,当你发布集合时,你应该引用集合名称(messages),而不是流星变量(Messages)
Meteor.publish('messages', function(){...
集合必须在客户端和服务器上定义!只需在客户端和服务器端导入您的集合名称:
import { buyList, Messages, Images, WhoAreWe, merchantReviews } from '../imports/api/tasks.js';
当然,您仍然需要订阅各种出版物。
我的浏览器控制台中不断收到这些错误消息:
Exception in template helper: ReferenceError: "CollectionNames" is not defined
"CollectionNames" 是我应用程序中的所有 collection。我已经研究过但找不到合适的解决方案。
我的环境:
我是运行 meteor 1.2
task.js 文件是我定义每个 collection 的地方。下面是 task.js
中的代码
/我的流星应用
--/imports/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; }});
服务器是我发布 collection 的地方。下面是代码:
/我的流星应用
--/server/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();
});
});
而客户端是我订阅 collection 的地方。在下面找到代码:
/myMeteorApp
--/client/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');
我哪里错了。我已经在这里待了很多天了......请帮忙!
这是一个命名问题,当你发布集合时,你应该引用集合名称(messages),而不是流星变量(Messages)
Meteor.publish('messages', function(){...
集合必须在客户端和服务器上定义!只需在客户端和服务器端导入您的集合名称:
import { buyList, Messages, Images, WhoAreWe, merchantReviews } from '../imports/api/tasks.js';
当然,您仍然需要订阅各种出版物。