Meteor:从“客户端控制台”执行“到处”的呼叫

时间:2014-01-13 04:17:18

标签: meteor

据说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说“找不到方法”,因为我需要在服务器上执行new Meteor.Collection("pages");

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

1 个答案:

答案 0 :(得分:3)

好吧,它没有“自动”弄明白 - 你必须非常明确地做两件事之一:

  1. 将代码分隔为clientserver目录。
  2. 将代码包裹在isClientisServer部分。
  3. 否则,您编写的任何代码都将在两种环境中执行。但是,用户在客户端上输入的任何代码都只能在客户端上执行。 Meteor专门用于保护这一边界。

    您可以从客户端调用服务器上的method,但不能再欺骗服务器执行客户端定义的函数。

    在您的具体示例中,您始终只能在客户端上定义集合,如下所示:

    Pages = new Meteor.Collection(null);
    

    这将允许您在客户端上自由操作集合数据,但它不会涉及服务器(任何内容都不会存储在数据库中)。