将RShiny应用程序重新编码为React App - 如何将我的数据传输到我的React App

时间:2018-03-18 00:51:33

标签: mongodb reactjs api shiny plumber

我正在学习我希望/正在尝试制作的与篮球相关的数据网络应用程序的完整堆栈开发。考虑到我的技术技能,我有一个与解决我的数据问题的最佳方法有关的问题。

几个月前,我使用R创建了following R Shiny App。这个应用程序的堆栈/非常不完整的后端是:

  • 我使用R Shiny启动应用程序,托管在带有Shiny Server的EC2实例
  • 在R中,我有一个名为scraper.R的脚本,每天(每天一次)从MySportsFeed(一个很棒的体育API)查询数据,并将新的每日数据更新为我拥有的8个CSV文件中的1个。 (我的Shiny应用程序中的每个图表都有不同的CSV文件)
  • 我的R Shiny应用程序然后将CSV读入app.R文件,该文件包含整个应用程序的所有代码。

为了扩展这个应用程序并使其更好,我一直在学习完整的堆栈javascript开发,我即将开始编写这个Shiny应用程序作为React应用程序。

我目前的挑战/考虑是如何管理我的React应用程序中的数据。特别是:

  1. 我的scraper.R文件使用dplyr和其他R库执行 A TON 数据操作。从MySportsFeed的API提供的表单中获取数据,到我的Shiny App所需的表单,对于我的所有图表和图表,都是相当多的。

  2. 话虽如此,我想继续使用R来调用MySportsFeed API并格式化数据。我当然希望取消CSV文件,但这并不容易。 8个CSV文件中的每一个都包含对MySportsFeed API的数百次调用的结果。 (对MySportsFeed的每个API调用可能会给我1个NBA数据游戏,而CSV文件已经更新了1000个NBA数据游戏)。

  3. 我相信我想用(b)将数据从CSV文件中读取到R Shiny应用程序中,(b)使用托管的数据源调用我自己的API端点(我可以在R或Javascript中创建API端点) ,R的管道工对此有好处)

  4. 我相信我想用(b)将数据存储在mongo数据库中来替换(a)将数据存储在CSV文件中,该数据库可轻松插入React应用程序。

  5. 我的问题是:是否有一种直观的方式将以下内容连接在一起:

    • 我的R代码(调用MySportsFeed API,抓取新数据,并将数据处理为图表就绪格式)
    • 一个API(无论是R管道工程API还是包含我所有数据的JavaScript API)
    • mongo数据库(用于存放我历史上所有废弃的数据)。

    提前致谢。

    编辑 - 几个月前,我在一个RShiny应用程序上发帖here,我想将其变成一个React应用程序。

1 个答案:

答案 0 :(得分:3)

我认为你应该研究一下OpenCPU - 它可以为您提供大部分内容(您的R代码的HTTP API),而且它的可扩展性只是闪亮服务器专业版的一小部分。它需要将代码转换为R包。

可以通过mongolite库连接到MongoDB,但除非由于某种原因需要非结构化数据存储(不确定您所抓取的源是否稳定),否则SQL数据库可能更容易处理数据库性能drop(我发现MongoDB中的调试性能问题更难)。

我无法对React发表评论,因为我对JS几乎一无所知,但显然人们已将OpenCPU与ReactJS结合起来:https://github.com/sdeboudt/reactr