Meteor 如何抽象处理集合的代码

Meteor 如何抽象处理集合的代码,meteor,Meteor,我有几个不同的视图(客户端代码),需要插入/更新我的集合。我不想让重复的代码处理insert/update,而是将其拉到一个单独的文件中,该文件的函数是全局可访问的 我已经看到了几个例子,其中使用construct Meteor.methods实现了这一点。不是所有Meteor.methods都在服务器上执行吗?这对延迟补偿有何影响?有更好的方法吗?或者这是目前可以接受的实现方法吗?我将它们放在一个方法中,但将该方法公开给客户端。换句话说,不要把它放在server目录中,也不要用if(Meteo

我有几个不同的视图(客户端代码),需要插入/更新我的集合。我不想让重复的代码处理insert/update,而是将其拉到一个单独的文件中,该文件的函数是全局可访问的


我已经看到了几个例子,其中使用construct Meteor.methods实现了这一点。不是所有Meteor.methods都在服务器上执行吗?这对延迟补偿有何影响?有更好的方法吗?或者这是目前可以接受的实现方法吗?

我将它们放在一个方法中,但将该方法公开给客户端。换句话说,不要把它放在
server
目录中,也不要用
if(Meteor.isServer)
保护它。我更喜欢在
collections
目录中定义我的所有集合及其方法,该目录由客户端和服务器加载。如果客户机有方法的定义,则称为存根。有了这些信息,我鼓励您重新阅读本文的方法部分。简短的版本是,由于延迟补偿,代码将在客户端和服务器上并行运行。您可以通过在定义中放入一个简单的
console.log
来验证这一点(调用时它将同时打印到浏览器控制台和命令控制台)。对于存根的更奇特的用法,您可以查看视频。

在我这边,我使用以下结构:

/common/collections/[each collection gets a file where it is defined]
/common/models/[each collection gets a model file where the model is defined]
这样我就可以在客户端和服务器上重复使用尽可能多的代码

我使用CoffeeScript创建类,但您也可以在纯Javascript中这样做

我的模型构造函数接受属性散列(meteor对象),从那里它可以封装我的方法

题外话#1:作为奖励,我的模型扩展了一个超级对象,我将其命名为“MeteorModel”,我将共享代码放在模型之间

OffTopic#2:我还将允许和拒绝逻辑放在这些模型中,以便可以从客户端或服务器端执行任意验证。非常有用,到目前为止,我还没有找到一种更好的方法来模拟对象修改,而不在“普通流星”中实际修改它


我不喜欢直接与Meteor.Collections合作,也不喜欢一边编写我的代码,因为Meteor将如何发展还不清楚,我希望有空间改变我的方法。

谢谢你的解释。文档现在更有意义了。感谢分享您如何组织文件。了解其他人如何设置他们的项目很有帮助。