在客户端和服务器之间共享集合以及私有服

时间:2015-02-21 11:53:38

标签: meteor

我有永远不会从客户端看到/调用的方法。应该调用这些私有“帮助器”方法的唯一方法是通过服务器上的Meteor方法声明。

我试过这样做,但由于某种原因,我无法共享我的收藏定义,即使它们被放在lib文件夹中

LIB /集合/ tabs.js

Tabs = new Mongo.Collection('tabs');

服务器/ LIB /集合/ tabs.js

_.extend(Tabs, {
  /* Increments download count
   */
  incrementDownloadsCount: function(tabId) {
    Tabs.update({_id: tabId}, { $inc: { downloads: 1 } }, function(error, result) {
      if (error) { throw new Meteor.Error(error.mesage); }
    });
  }

});

知道为什么会这样,以及这是私有服务器方法的正确方法吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我不完全清楚你的问题是什么。

  • 如果要隐藏客户端中的集合,则应使用http://docs.meteor.com/#/basic/Meteor-methods中所述的Meteor.methods()。这将导致在服务器上调用逻辑,而不允许客户端直接操作集合
  • 如果您想与服务器和客户端共享集合,您的方法是正确的,将集合定义放在一个文件中,例如在lib文件夹中。
  • 如果你想与服务器和客户端共享集合,并且不希望客户端可以操作集合,你必须删除meteor不安全包并分别使用Collection.allow或Collection.deny来控制什么是允许的情况见:http://docs.meteor.com/#/basic/Mongo-Collection-allow

希望有助于获得方向。