Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor.call()方法-Meteor.js 何时仅对客户端或服务器端请求使用Meteor.call()方法。请告知 在我的应用程序Meteor.users()中,显示控制台中的所有用户。如何禁用此功能_Meteor_Meteor Blaze_Meteor Accounts_Meteor Autoform - Fatal编程技术网

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

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.call()来调用服务器端方法。流星有令人敬畏的力量

  • 如果Meteor.users()返回客户端的所有用户,则服务器将发布所有用户文档。安装后是否已删除meteor(
    meteor remove autopublish

  • 1。Meteor.call()

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

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

    • 客户端到服务器调用(良好实践)
    • 服务器到服务器的调用(不是很好的做法,但很有效)
    这是流星在紧要关头说的话:

    可以使用Meteor.call从客户端和服务器调用此方法。 请注意,您应该仅在某些代码 需要可从客户处调用;如果你只是想模块化 仅从服务器调用的代码,请使用常规 JavaScript函数,而不是方法

    2。出版物和订阅

    为确保数据安全,您需要删除
    自动发布
    不安全的
    软件包。这将禁用集合的自动发布,也不允许客户端对数据库进行自由写入访问

    现在,为了确保只发布所需数量的集合,您需要设置发布内容(或者检查发布内容,如果已经设置)

    发布:这是从服务器到客户端提供数据库集合的内容

    它看起来像这样,请在项目中的
    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(“用户”)发布用户集合?