让我们想象3台机器:
如果我从客户端执行mongodb请求,它将连接到Meteor,还是直接连接到mongodb?谢谢。
答案 0 :(得分:3)
在客户端Meteor中,meteor运行MiniMongo,这是mongoDB的js API实现。
正如docs
所述在客户端上,没有与MongoDB数据库的直接连接, 事实上,同步API是不可能的(也可能是什么 你要)。相反,在客户端上,集合是客户端缓存 的数据库。这是通过Minimongo库实现的 内存中,所有JS,MongoDB API的实现。
对于写入请求 - 客户端保存反映在MiniMongo中的数据,然后MiniMongo与Meteor Server进行通信。根据允许/拒绝规则,数据可能会写入MongoDB服务器或被拒绝。 (假设,^no?$
包被删除)
简而言之,客户端(MiniMOngo)和Meteor Server通过DDP进行通信,Meteor Server和MongoDB通过NodeJS MongoDB驱动程序进行通信。来自客户端的所有通信都转到服务器,并且根据定义的规则可能/可能不会写入MongoDB DB。
Meteor客户端数据库请求的安全性如何? 对此的答案是“它取决于”。根据Meteor docs,不建议依赖允许/拒绝规则来保证安全性。最好通过讨论here
的方法来实现这一点一些资源:
Allow/Deny Rules in Meteor
Collections in Meteor
Read about MiniMongo Here