Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载带有假火和遗忘数据的Meteor客户端应用程序_Meteor_Publish Subscribe - Fatal编程技术网

加载带有假火和遗忘数据的Meteor客户端应用程序

加载带有假火和遗忘数据的Meteor客户端应用程序,meteor,publish-subscribe,Meteor,Publish Subscribe,我正试图找出一个好方法来创建使用Meteor应用程序的教程。从视觉上看,我找到了一个好方法,并将其打包成一个智能包: 然而,第二件事却很难搞清楚 在许多情况下,教程应用程序需要加载假数据,以便向用户演示界面,而不需要填充可能难以生成的真实数据。(例如,请参见PlanApple的演示)。在Meteor中,由于应用程序的内容基本上是由一些集合的内容定义的,因此我认为有两种方法可以做到这一点: 维护两套集合,一套用于教程,另一套用于实际应用程序。在教程中使用第一组,在用户实际使用应用程序时使用第二组

我正试图找出一个好方法来创建使用Meteor应用程序的教程。从视觉上看,我找到了一个好方法,并将其打包成一个智能包:

然而,第二件事却很难搞清楚

在许多情况下,教程应用程序需要加载假数据,以便向用户演示界面,而不需要填充可能难以生成的真实数据。(例如,请参见PlanApple的演示)。在Meteor中,由于应用程序的内容基本上是由一些集合的内容定义的,因此我认为有两种方法可以做到这一点:

  • 维护两套集合,一套用于教程,另一套用于实际应用程序。在教程中使用第一组,在用户实际使用应用程序时使用第二组
  • 使用一组集合,在使用订阅的教程中使用假数据填充集合,在用户实际使用不同订阅的应用程序时使用真实数据填充集合
  • 第一种方法显然是不好的;这意味着,如果不知道应用程序是否被用作教程,就无法编写应用程序,并且在展示应用程序时存在大量杂乱的
    if/else
    反应逻辑,这是不必要的。此外,如果应用程序的集合超过几个,则很难维护

    第二种方法似乎更像流星式的做事方式。我们基本上想要的是服务器发布用一些伪数据填充所有客户端集合,然后允许在客户端以任何方式操纵数据,而不会将更改传播到服务器;客户端基本上获取服务器教程数据的副本,然后仅对其进行本地更改,然后将其丢弃。这归结为两件事:

    • 通过自定义订阅将虚假数据从服务器发送到客户端,并将其发送到与常规应用程序相同的命名集合中。正如我在

    • 在初始加载数据后,忽略客户端(服务器上)的任何插入、更新和删除;但允许它们在本地发生。如果创建空(未命名)集合,这也是可能的,如中所示

    问题是,尽管可以分别执行上述两个步骤中的每一步,但我想同时执行这两个步骤-我希望将数据加载到与客户端使用真实数据相同的命名集合中,以避免具有两组集合的复杂控制逻辑,但我也希望在本教程中,更改只在本地进行,而不是传播回订阅

    有人知道怎么做吗

    关于第二部分是否可行的相关问题:


    编辑:在本教程中,我们基本上想做的是直接插入本地流星集合,如{}。但是,有没有一种方法可以在教程中为所有相关的变种人启用此行为,而不是显式地指定此行为?

    我最终用包实现了这一点,该包允许将连接的客户端划分为不同的片段,每个片段包含不同的数据

    基本上,这个想法是当用户在教程中时将他们放入一个新分区,然后当他们真正使用应用程序时将他们放入另一个分区。与软件包配合使用也很好。这就放弃了将更改设置为客户端本地的功能,但是存储教程数据不会有太多开销,而且在我的案例中也很有用

    这样做的应用程序示例如下