Javascript Meteor发布/订阅无法从服务器文件夹工作
我有一个简单的meteor应用程序,用于学习如何进行CRUD操作。它工作得很好,但我在我的收藏的发布/订阅方面遇到了问题,我一辈子都搞不清楚 我的文件夹结构是Javascript Meteor发布/订阅无法从服务器文件夹工作,javascript,collections,meteor,Javascript,Collections,Meteor,我有一个简单的meteor应用程序,用于学习如何进行CRUD操作。它工作得很好,但我在我的收藏的发布/订阅方面遇到了问题,我一辈子都搞不清楚 我的文件夹结构是 /client /main.js /templates /public /server /main.js 我在服务器文件夹中有一个main.js文件,其中包含具有发布功能的基本集合 /server/main.js Dist = new Mongo.Collection('dist'); Meteor.publ
/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});
});
在客户端文件夹a下订阅
/client/main.js
Meteor.subscribe('dist');
在一个模板中,我有一个for-each循环,该模板假定为用户显示返回的信息。当我的servers main.js在服务器文件夹中时,我的模板循环只返回CRUD调用,返回服务器正常工作。如果我将server main.js文件移动到项目的根目录中,一切都会正常工作。然而,这是否违背了发布/订阅特性的目的:将主集合保留在服务器端,同时只向用户显示他们自己的数据
我不明白为什么在无休止的谷歌搜索之后会发生这种情况,似乎什么都没有改变。自动发布和不安全也已删除。我认为唯一的第三方软件包是样式引导。您还没有在您的客户机上创建
集合。因此,您已经订阅了它,但无法使用变量访问数据。要解决这个问题,只需将Dist=newmongo.Collection('Dist')代码>在共享文件夹中(除了客户端
、服务器
、专用
…)或两个位置
我认为你甚至可以像现在一样启动你的应用程序,在浏览器控制台中声明集合,你的数据将可以从客户端Dist
变量访问
将其放在共享文件夹中,您可以编写一次代码,然后在任何地方执行。
声明集合不会自动使其充满服务器上的所有数据(除非您有autopublish
)。它只是在客户机上建立了一个端点,您必须用订阅、仔细编写和绑定的发布来填充该端点。好的,因此我需要在客户机端定义集合,并且由于自动发布已被删除,因此不会使用服务器上主集合中的任何数据填充它?当我发布集合并订阅它时,客户端集合将填充已发布的内容?是的。这就是它的工作方式:每个人都声明一个集合
,服务器发布其中的一部分,客户端订阅发布并获取选定的数据。