【发布时间】:2017-02-10 02:24:50
【问题描述】:
让我们想象 3 台机器:
- 客户
- 流星服务器
- MongoDB 服务器
如果我从客户端执行 mongodb 请求,它将连接到 Meteor,还是直接连接到 mongodb?谢谢。
【问题讨论】:
让我们想象 3 台机器:
如果我从客户端执行 mongodb 请求,它将连接到 Meteor,还是直接连接到 mongodb?谢谢。
【问题讨论】:
在客户端 Meteor 中,meteor 运行 MiniMongo,一个 mongoDB 的 js API 实现。
如docs所写
在客户端,没有直接连接MongoDB数据库, 事实上,它的同步 API 是不可能的(也不可能是什么 你要)。相反,在客户端,集合是客户端缓存 的数据库。这要归功于 Minimongo 库——一个 内存中,所有 JS,MongoDB API 的实现。
对于写请求——客户端保存反映在 MiniMongo 中的数据,然后与 Meteor 服务器通信。根据允许/拒绝规则,数据可能被写入 MongoDB 服务器或被拒绝。 (假设,insecure 包被移除)
简而言之,Client(MiniMOngo)和Meteor Server通过DDP进行通信,Meteor Server和MongoDB通过NodeJS MongoDB Driver进行通信。来自客户端的所有通信都转到服务器,并且根据定义的规则可能/可能不会写入 MongoDB DB。
Meteor 客户端 DB 请求的安全性如何?
答案是“视情况而定”。根据 Meteor docs 的说法,不建议依赖允许/拒绝规则来保证安全。总是首选通过here讨论的方法来做到这一点
一些资源:
Allow/Deny Rules in Meteor
Collections in Meteor
Read about MiniMongo Here
【讨论】: