Meteor,如何使用乐观的UI更新集合

时间:2016-03-11 18:32:14

标签: meteor meteor-methods optimistic-ui

在我的应用程序中,我将方法放在客户端和服务器之间的共享位置。这种方式在meteor docs中建议,方法机制负责乐观的UI。

但我刚刚在David Weldon blog中读到了关于双层实现的内容,这对我来说很有意义。

问题是如何通过双层实现实现乐观的UI。

  1. 将方法移动到服务器,在模板事件中更新clientDB以获得乐观UI,并拒绝从客户端更新到DB的所有内容。

  2. 有没有办法在客户端提供方法,但只能从其他方法调用?

  3. 任何建议的方法都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

我认为重要的是拒绝客户端插入/更新。一旦完成,那么你可以从客户端运行第二层代码,它实际上不会做任何事情,因为它将被拒绝。

以下是https://www.discovermeteor.com/blog/meteor-pattern-two-tiered-methods/支持该观点的几段:

  

客户&服务器

     

虽然我说postSubmit函数主要是在服务器上运行,但它会在两种情况下在客户端上运行。

     

首先,当从postSubmit方法调用时,作为该方法的客户端模拟的一部分。在这种情况下,Meteor将执行模拟,在客户端数据库中插入帖子,然后最终触发服务器端postSubmit方法调用。

     

另一个用例是当有人直接从浏览器控制台调用postSubmit函数时。如果发生这种情况,Posts.insert()调用将失败,因为我们不允许客户端插入,也不会发生任何事情。

     

请注意,允许/拒绝不会影响从Meteor方法中执行的代码,这就是即使您没有声明允许/拒绝策略,模拟也不会失败的原因。

换句话说,回答#1:将方法保存在一个公共位置并删除不安全的包(流星删除不安全)

回答#2:如果在方法之外调用它们并不重要,因为它们会被拒绝。