2015-07-11 91 views
2

喜IM入門流星,所以我有一個問題:我無法從客戶端文件夾訪問集合 我的項目結構是默認:meteor create testApp訪問收集

/testApp 
--.Meteor/ 
--testApp.html 
--testApp.css 
--testApp.js 

然後,我創建一個蒙戈集合我把它添加到testApp.js

city = new Mongo.Collection('data'); 

運行與meteor命令的應用程序,然後我進入鉻控制檯 city.find().fetch();它的工作完美,並返回城市

但是當我移動testApp.js,testApp.css,testApp.html名爲/client

/testApp 
--.Meteor/ 
--client/ 
----testApp.html 
----testApp.css 
----testApp.js 

我不能得到鉻控制檯收集新文件夾,它的意思是city.find().fetch();返回[]

有什麼想法嗎?

回答

3

這是正常行爲。 clientserver被流星視爲特殊文件夾,其中只有客戶端或服務器將執行它們包含的代碼。這是一個隱含的if (Meteor.isServer)

相當於當您在client文件夾聲明的集合,它只會在你的客戶端數據庫,MiniMongo創建一個空的集合。因此,您的MiniMongo收藏集與任何服務器端「真正」的mongodb收藏無關。這就是爲什麼你不能訪問保存到你的實際mongodb數據庫中的數據。

所以爲了解決這個問題,你所能做的就是:

  • 在一個單獨的js文件中聲明一次您的收藏,您clientserver文件夾的外部,使得雙方都意識到,收集(在大多數情況下推薦)。我使用的是collections文件夾在我的應用程序爲
  • 根申報您的收藏兩次:一次是在你的client文件夾像你這樣,另一次在server文件夾在您的應用程序的根目錄(有用在這種特定的情況下,作爲加蓋收藏品等
+0

嗨@BraveKenny,我不能解決這個問題? – Gintoki

+0

對不起,忘了給解決方案...更新我的答案。 – SylvainB

+0

是的,我創建一個文件夾'集合'我創建一個文件,我設置'城市=新Mongo.Collection('數據');'但它仍然行不通? – Gintoki