Meteor publish/subscription 无法从服务器文件夹运行
Meteor publish/subscription not working from server folder
我制作了一个简单的流星应用程序,用于学习如何进行 CRUD 操作。效果很好,但我的 collection 的 publish/subscribe 有问题,我一辈子都弄不明白。
我的文件夹结构是
/client
/main.js
/templates
/public
/server
/main.js
我在服务器文件夹中有一个 main.js 文件,具有基本 collection 和发布功能
/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');
我在模板中有一个 for each 循环,它应该显示为用户返回的信息。当我的服务器 main.js 位于服务器文件夹中时,我的模板循环 returns 除了 CRUD 调用回服务器外什么都没有。如果我将服务器 main.js 文件移动到项目的根目录中,一切都会按预期进行。但是,这是否违背了 publish/subscribe 方面的目的:将主要 collection 保留在服务器端,同时仅向用户显示他们自己的数据?
在无休止的 Google 搜索之后,我无法弄清楚为什么会发生这种情况,似乎没有什么不同。自动发布和不安全也已被删除。我认为唯一的第三方包是 bootstrap 样式。
您还没有在您的客户端上创建 Collection
。因此,您已经订阅了它,但无法使用变量访问数据。要解决此问题,只需将 Dist = new Mongo.Collection('dist');
放入共享文件夹(除 client
、server
、private
... 之外的任何文件夹)或两个位置。
我认为您甚至可以像现在这样启动您的应用程序,在浏览器控制台中声明集合,然后您的数据就可以从客户端 Dist
变量访问。
放在共享文件夹中,代码一次编写,处处执行
声明集合 不会 自动使其充满服务器上的所有数据(除非您有 autopublish
)。它只是在客户端上建立了一个端点,您必须用订阅和精心编写的有界出版物来填充它。
我制作了一个简单的流星应用程序,用于学习如何进行 CRUD 操作。效果很好,但我的 collection 的 publish/subscribe 有问题,我一辈子都弄不明白。
我的文件夹结构是
/client
/main.js
/templates
/public
/server
/main.js
我在服务器文件夹中有一个 main.js 文件,具有基本 collection 和发布功能
/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');
我在模板中有一个 for each 循环,它应该显示为用户返回的信息。当我的服务器 main.js 位于服务器文件夹中时,我的模板循环 returns 除了 CRUD 调用回服务器外什么都没有。如果我将服务器 main.js 文件移动到项目的根目录中,一切都会按预期进行。但是,这是否违背了 publish/subscribe 方面的目的:将主要 collection 保留在服务器端,同时仅向用户显示他们自己的数据?
在无休止的 Google 搜索之后,我无法弄清楚为什么会发生这种情况,似乎没有什么不同。自动发布和不安全也已被删除。我认为唯一的第三方包是 bootstrap 样式。
您还没有在您的客户端上创建 Collection
。因此,您已经订阅了它,但无法使用变量访问数据。要解决此问题,只需将 Dist = new Mongo.Collection('dist');
放入共享文件夹(除 client
、server
、private
... 之外的任何文件夹)或两个位置。
我认为您甚至可以像现在这样启动您的应用程序,在浏览器控制台中声明集合,然后您的数据就可以从客户端 Dist
变量访问。
放在共享文件夹中,代码一次编写,处处执行
声明集合 不会 自动使其充满服务器上的所有数据(除非您有 autopublish
)。它只是在客户端上建立了一个端点,您必须用订阅和精心编写的有界出版物来填充它。