Meteor.call()方法-Meteor.js 何时仅对客户端或服务器端请求使用Meteor.call()方法。请告知 在我的应用程序Meteor.users()中,显示控制台中的所有用户。如何禁用此功能
您应该在客户端使用Meteor.call()来调用服务器端方法。流星有令人敬畏的力量Meteor.call()方法-Meteor.js 何时仅对客户端或服务器端请求使用Meteor.call()方法。请告知 在我的应用程序Meteor.users()中,显示控制台中的所有用户。如何禁用此功能,meteor,meteor-blaze,meteor-accounts,meteor-autoform,Meteor,Meteor Blaze,Meteor Accounts,Meteor Autoform,您应该在客户端使用Meteor.call()来调用服务器端方法。流星有令人敬畏的力量 如果Meteor.users()返回客户端的所有用户,则服务器将发布所有用户文档。安装后是否已删除meteor(meteor remove autopublish) 1。Meteor.call() Meteor.call()通常用于从客户端调用服务器端方法。但是,您也可以在服务器端使用Meteor.call()调用另一个服务器端函数,尽管不建议这样做 所以有两种方法可以使用Meteor.call() 客户端到
meteor remove autopublish
)Meteor.call()
通常用于从客户端调用服务器端方法。但是,您也可以在服务器端使用Meteor.call()
调用另一个服务器端函数,尽管不建议这样做
所以有两种方法可以使用Meteor.call()
- 客户端到服务器调用(良好实践)
- 服务器到服务器的调用(不是很好的做法,但很有效)
自动发布
和不安全的
软件包。这将禁用集合的自动发布,也不允许客户端对数据库进行自由写入访问
现在,为了确保只发布所需数量的集合,您需要设置发布内容(或者检查发布内容,如果已经设置)
发布:这是从服务器到客户端提供数据库集合的内容
它看起来像这样,请在项目中的api
或server
文件夹中查找:
Meteor.publish('allUsers', function() {
if (!this.userId) {
return this.ready();
}
return Meteor.users.find({});
});
请注意,在上面的示例中,我们没有在MongoDB调用中提供任何筛选器参数,因此本出版物将返回一个包含数据库中所有用户的游标
Meteor.publish('currentUser', function() {
if (!this.userId) {
return this.ready();
}
return Meteor.users.find({
_id: this.userId
});
});
现在在本出版物中,我们提供了用户\u id
字段作为过滤器。因此,这将为Meteor.users()
返回一个光标,其中只有当前用户对象作为可用项
订阅:要访问出版物,需要相应地调用客户端代码上的订阅,如下所示:
Meteor.subscribe('currentUser');
确保您没有同时订阅allUsers,因为多个订阅将提供两个订阅的联合集。这样,您的客户端迷你mongo中就有了currentUser
+allUsers
=allUsers
。我们不想那样
检查上述内容后,您可以在客户端代码(或控制台)中使用Meteor.users()
,并发现它只包含当前登录用户的用户数据
有关的详细信息,请参阅官方文档。我已经删除了autopublish,但仍在发布所有收藏。如果您删除了该软件包,则不应出现这种情况,除非有另一个软件包发布用户收藏。您是否介意共享您的.meteor/versions文件,并确保没有任何服务器端代码通过meteor.publish(“用户”)发布用户集合?