2016-11-14 12 views
0

私は私のブラウザコンソールでこれらのエラーメッセージを取得し続ける:
コレクションを公開した後にコレクションが定義されないのはなぜですか?

​​

「CollectionNamesは、」私は私のアプリを持っているすべてのコレクションであること。私は研究しましたが、適切な解決策を見つけることができません。

私の環境:
私はそれぞれのコレクションを定義しtask.jsファイルがある流星1.2

を実行しています。私はコレクションを公開する場所、サーバーがある/輸入/ 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; }}); 

- 以下はtask.js

/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
:以下のコードです。コードの下に検索:

/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

あなたはこう言っています: "" CollectionNames "は私のアプリで持っているすべてのコレクションです。私は研究しましたが、適切な解決策を見つけることはできません。 - あなたが提供したコードには表示されません - 他の場所に表示されますか? – Mikkel

+1

他の質問と同じ構造を使用している場合は、インポート(およびエクスポート)ステートメントが間違っています。 [そのドキュメント](https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export)を見てください。 – MasterAM

+0

@Mikkel申し訳ありませんが、十分に透明ではありません。ブラウザのConsoleにエラーメッセージが表示されます: 'Exception in template helper:ReferenceError:Messages is not defined '、&'テンプレートヘルパーの例外: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(){... 
関連する問題