流星中minimongo的原因是什么

What is reason of minimongo in meteor

真正的原因是什么,minimongo应该如何在meteor中使用?为了安全起见,客户端不应访问查询。所以它们应该只保存在服务器上。因此无论如何都不应该在客户端上查询任何东西。

即使查询代码保留在客户端,服务器上的数据也不应由客户端直接更新,而是应将执行的操作发送到服务器,服务器应联系 Mongo 并执行操作。我对这部分的理解正确吗?这是 allow/deny 规则的原因吗?

但是,meteor 文档仍然认为 allow/deny 规则不够安全,应该仍然不允许这样的写入。我对第二部分的理解正确吗?

如果是,那么使用minimongo的原因是什么?它只是用于原型制作吗?如果我想拥有最高的安全性并因此避免使用 allow/deny(禁止一切),那么我可以删除 minimongo,还是它是必需的并且仍然用于某些事情?为了什么?

谢谢。

由于以下内容太短无法发表评论,因此我将其创建为答案。我不会声称它是完整的。希望它能很好地解释这种情况。

最初 minimongo 旨在反映对集合的操作 "as if they would appear on the server side"。 Meteor 自动将执行的操作与服务器端集合同步 - 为您节省大量设计和开发时间。

允许/拒绝 是作为额外的控制层而发明的,因此客户端只能操纵涉及 allow/deny.[=18 中定义的操作的数据=]

但是 a critical security vulnerability 已被发现,这就是为什么现在不鼓励这样做,应该改用服务器端方法。

您可以自己尝试,方法是创建一个集合并将 allowinsert, update, delete 设置为 true,然后在客户端上执行其中一些操作。一个很好的功能,但不幸的是已经过时了(甚至不确定是否 100% 在新版本中工作)。

但这还不是全部! 当涉及到客户端上涉及 cursors. Very powerful concepts include cursor.observe and cursor.observeChanges 的查询操作时,您仍然可以使用 minimongo。您还可以创建复杂的查询,如果使用传统的数组迭代方法,这将需要大量工作。

最后 minimogno 仍然是同步文档(由客户端订阅并由服务器发布)的目的地。它表示数据的投影,可以定义为 publication.

中最精细的数据