Meteor:客户端数据变更操作
关于客户端进行数据变更操作,meteor提供了两套机制:
- 客户端CRUD+服务端deny/alllow
- 服务端methods
CRUD操作的层次是在数据模型级别,而methods的操作层次是在业务级别,这也对应了它们的权限控制级别。个人认为,在客户端直接进行CRUD操作(数据模型级别的操作),表面上灵活很多,但是很难进行权限控制,很容易暴露安全问题,并因此反而增加程序复杂度。因此,客户端对数据的修改,应该全部由methods进行一次业务级别的隔离。
当然,使用collection2或collection-hooks进行模型定义或数据模型级别的保护也是不错的,但是应该意识到,它们的保护作用,是面向后端业务(methods),而不是直接面向前端调用。
至于前端methods,主要作用是延迟补偿,不在此讨论。