在开始另一个之前等待一个发布完成

时间:2017-02-25 21:45:53

标签: javascript performance meteor

我还没有找到一个比较好的解决方案。也许社区可以提供帮助?

我正在从一些宁静的终点将数据提取到我的流星应用程序中。一个建立在另一个上。例如..我点了一个终点并得到了一组作者。然后我需要点击第二个端点来拉出每个作者写的书。

现在我在服务器端有两个单独的发布函数来获取数据集,但第二个依赖于第一个数据。 (我在我的应用程序中最初的尝试只是在一次发布中完成所有这些,但这感觉不是最好的架构)

有没有办法从另一个发布服务器端订阅另一个发布?或者,其他一些检查我可以做的方法? 到目前为止,互联网和堆栈溢出几乎没有产生任何结果。我知道有一些可用的publishComposite软件包......但它们似乎相对较重,并不一定适用于我正在尝试的内容。任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

我建议采取分而治之的策略。你基本上有2个问题要回答:

  1. 对于集合,我要进行客户端或服务器端连接吗?
  2. 什么驱动器调用远程服务来获取新数据?
  3. 我认为你可以单独制作这些作品并将它们与db和Meteor的反应性结合在一起。

    e.g。您可以从编写访问远程REST API的代码开始。我认为那里的策略是让作者打电话,获取数据,然后进行书籍调用。我会在一个函数中做到这一点,与promises捆绑在一起。当书籍数据返回时,将其和作者数据写入各自的馆藏(如果您还没有这些数据),确保外键完好无损。现在你可以将这个功能与按下按钮联系起来了,那部分现在就完成了。

    接下来,您可以继续收集并发布该数据。正如我所提到的,你必须决定在哪里加入。但是按照标准的Meteor实践,当数据库中的集合更新时,您的客户端会获取更新的数据。

    此时,您可以测试所有内容是否正确存储并在按下按钮时进行反应更新。

    最后一部分是决定驱动API调用的是什么,以替换按钮推送。正如我在评论中提到的那样,也许是一个cron工作,但也许你的应用程序中还有其他东西可以使它更自然。我认为你已经知道,发布这种发布的危险在于,你可以同时获得50个订阅,并且你不想要达到这个REST API 50倍。

相关问题