2015-07-11 51 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