gpt4 book ai didi

Meteor.call() 方法 - Meteor.js

转载 作者:行者123 更新时间:2023-12-03 09:14:04 27 4
gpt4 key购买 nike

  1. 何时仅对客户端或服务器端请求使用 Meteor.call() 方法。请指教
  2. 在我的应用程序中,Meteor.users() 在控制台中显示所有用户。如何禁用此功能。

最佳答案

<强>1。 Meteor.call()

Meteor.call() 通常用于从客户端调用服务器端方法。不过,您也可以在服务器端使用 Meteor.call() 来调用另一个服务器端函数,但不建议这样做。

所以有两种方式使用Meteor.call()

  • 客户端到服务器的调用(良好实践)
  • 服务器到服务器的调用(不是好的做法,但它有效)

这是 meteor docs紧要关头说:

This Method is callable from the client and server using Meteor.call. Note that you should only use a Method in the case where some code needs to be callable from the client; if you just want to modularize code that is only going to be called from the server, use a regular JavaScript function, not a Method.

<强>2。出版物和订阅

为了确保您的数据安全,您需要删除 autopublishinsecure 软件包。这将禁用您的集合的自动发布,并且还禁止从客户端对您的数据库进行自由写入访问。

现在,为了确保您只发布所需数量的集合部分,您需要设置您的出版物(或者检查它们,如果它们已经设置)。

出版物:这是从服务器向客户端提供数据库集合的内容。

它看起来像这样,在项目内的 apiserver 文件夹中查找它:

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
});
});

现在,在本出版物中,我们提供了用户 _id 字段作为过滤器。因此,这将返回 Meteor.users() 的游标,仅将当前用户对象作为可用项目。

订阅:要访问您的出版物,您需要在客户端代码上相应地调用订阅,如下所示:

Meteor.subscribe('currentUser');

确保您没有同时订阅allUsers - 因为多个订阅将提供两个订阅的联合集。这样,您的客户端 mini-mongo 中就会有 currentUser + allUsers = allUsers 。我们不希望这样。

检查完上述内容后,您可以在客户端代码(或您的控制台)中使用 Meteor.users() ,发现它只会包含您当前登录的用户数据- 在用户中。

有关 Publications and Subscriptions 的更多详细信息,请参阅官方文档.

关于Meteor.call() 方法 - Meteor.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com