MiniMongo 基本上存储它通过DDP(Meteor 的数据协议)从某些消息中获取的数据。通常情况下,数据不会在本地缓存,而是在每次页面重新加载时重新创建,假设我们谈论的是在 WebView 中呈现的混合移动应用程序。
您可以查看使用Meteor DevTools for Chrome传递的消息。
这些消息 ( added/ changed/ removed) 通常通过pub/sub系统发送。您确实有责任决定发送什么。由于发布是由服务器上的函数调用启动的,因此您可以完全控制系统中的建模角色和权限,以及谁获得发布中的内容。
一个常见的模式是:
Meteor.publish('someProtectedPblication', function(/*...*/) {
if (this.userId && someCondition(this.userId) { // check for permission
return SomeCollection.find(someData, someFields); // return a cursor that gets synced with the user
}
return this.ready(); // the user is not authorized to view the data
});
当管理员创建用户时,我假设这是通过 Meteor 方法调用完成的,即RPC。除非您明确将其发布给他(我没有看到永远这样做的理由)。
我发现在客户端使用客户端 MiniMongo 突变 ( insert/ update/ delete) 没有太大价值,除了乐观的 UI 渲染,因为我认为使用allow/deny不安全且更容易出错的规则来保护它,并且我使用 Meteor 方法来处理任何突变。