我是一个简单的流星应用程序,用于学习如何进行CRUD操作。它的效果很好,但是我对我的收藏的发布/订阅存在问题,而且我无法解决这个问题。
我的文件夹结构是
/client
/main.js
/templates
/public
/server
/main.js
我在服务器文件夹中使用带有发布功能的基本集合
的main.js文件/server/main.js
Dist = new Mongo.Collection('dist');
Meteor.publish('dist', function (){
var currentUser = this.userId;
return Dist.find({owner: currentUser});
});
并在客户端文件夹下订阅
/client/main.js
Meteor.subscribe('dist');
我为模板中的每个循环设置了一个假设,以显示用户的返回信息。当我的服务器main.js在服务器文件夹中时,我的模板循环返回什么,但CRUD回调到服务器工作正常。如果我将服务器main.js文件移动到我的项目的根目录中,一切都按预期工作。但是,这不会破坏发布/订阅方面的目的:将主要集合保留在服务器端,同时向用户显示其自己的数据吗?
我无法弄清楚为什么在无休止的谷歌搜索之后发生这种情况似乎没有任何作用。自动发布和不安全也已被删除。我认为唯一的第三方软件包是样式引导程序。
答案 0 :(得分:1)
您尚未在客户端上创建Collection
。因此,您已订阅它,但无法使用变量访问数据。要解决此问题,只需将Dist = new Mongo.Collection('dist');
放入共享文件夹(除client
,server
,private
...之外的任何内容)或两个位置。
我认为您甚至可以像现在一样启动应用程序,在浏览器控制台中声明该集合,并且可以从客户端Dist
变量访问您的数据。
将其放在共享文件夹中,您可以编写一次代码并在任何地方执行它
声明集合不会自动使其充满服务器上的所有数据(除非您有autopublish
)。它只是在客户端上制定一个终点,你必须填写订阅和精心编写的有限的出版物。