如何在服务器端拒绝收集 insert/update

How to deny collection insert/update in the server side

我有一个 Meteor 应用程序 (A) 连接到一些生产远程集合(由另一个应用程序使用 B) 而我只想 A 从 B 的集合中读取数据并且 不修改 B 的集合数据 (即使修改发生在服务器中- B).
的一侧 我怎样才能在 A 中做到这一点?

您可以完全控制您的 Meteor 应用程序服务器代码在数据库中可以执行的操作。

为确保您的应用 A 服务器代码无法写入数据库,只需 永远不要 使用任何集合 insertupdateupsert方法。

Meteor 的特殊之处在于它还可以允许客户端启动数据库修改:只需确保删除 insecure 包并且 从不 使用集合 allow 服务器代码中的方法。

现在,针对您的案例的非常简单、防弹和标准实践解决方案就是为您的应用程序 A 创建一个不同的数据库用户,只有读取权限,如@NeilLunn 所解释的那样。这个不同的数据库用户凭据然后是您传递给应用程序 A 的 MONGO_URL 变量的一部分,因此这是将您的应用程序 A 连接到与应用程序 B 共有的远程数据库的唯一方法。