Meteor:从客户端控制台执行调用;凡事;

Meteor:从客户端控制台执行调用;凡事;,meteor,Meteor,据说Meteor可以自动(在大多数情况下)计算出在客户端上运行什么代码以及在服务器上运行什么代码,因此理论上,您可以将所有代码都写在一个.js文件中 我希望能够在我的浏览器控制台中编写代码,并让它像将代码放入服务器上的文件一样执行 例如,在我的浏览器控制台中: [20:08:19.397] Pages = new Meteor.Collection("pages"); [20:08:30.612] Pages.insert({name:"bro"}); [20:08:30.614] "sGmRr

据说Meteor可以自动(在大多数情况下)计算出在客户端上运行什么代码以及在服务器上运行什么代码,因此理论上,您可以将所有代码都写在一个.js文件中

我希望能够在我的浏览器控制台中编写代码,并让它像将代码放入服务器上的文件一样执行

例如,在我的浏览器控制台中:

[20:08:19.397] Pages = new Meteor.Collection("pages");
[20:08:30.612] Pages.insert({name:"bro"});
[20:08:30.614] "sGmRrQfezZMXuPfW8"
[20:08:30.618] insert failed: Method not found
Meteor说“找不到方法”,因为我需要做新的Meteor.Collection(“页面”)

但是,是否有解决方法,无论是使用上述automagic还是在我的浏览器控制台中明确表示“在服务器上运行以下代码行!”?

好吧,这不是“自动”解决的-您必须非常明确地做两件事之一:

  • 将代码分为
    客户端
    服务器
    目录
  • 将代码包装到
    isClient
    isServer
    部分
  • 否则,您编写的任何代码都将在这两种环境中执行。但是,用户在客户端上输入的任何代码都将仅在客户端上执行。流星号是专门为保护这一边界而设计的

    您可以从客户机调用服务器上的,但同样不能欺骗服务器执行客户机定义的函数

    在您的特定示例中,始终可以仅在客户端上定义集合,如下所示:

    Pages = new Meteor.Collection(null);
    
    这将允许您在客户机上自由操作收集数据,但不会涉及服务器(数据库中不会存储任何内容)