我已经查看了这个和这个线程以及其他一些线程,但无法找出我的解决方案。
RPostgreSQL
我已经使用 R 和 Shiny 构建了一个仪表板,并且说仪表板使用包从 Postgres 数据库中提取数据。目前,所有数据拉取和分析的代码都是在shinyServer
函数之外完成的,只有显示部分(output
和render
函数)在该shinyServer
部分中。我想对其进行设置,以便定期刷新仪表板数据并更新图表。我已经研究reactivePoll
并invalidateLater
理解了它们,但不能完全弄清楚如何在我的代码中实现它。
这是一个简化的示例server.R
代码:
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='host', port='12345', dbname='mydb',
user='me', password='mypass')
myQuery <- "select * from table"
myTable <- dbGetQuery(con, myQuery)
foo <- nrow(myTable)
bar <- foo * 2
shinyServer(
function(input, output, session) {
output$foo <- renderText(foo)
output$bar <- renderText(bar)
session$onSessionEnded(function(){
dbDisconnect(con)
dbDisconnect(con2)
dbUnloadDriver(drv)
})
}
)
现在,如果我想foo
定期更新,那也需要我刷新dbGetQuery
我拥有的命令,而且我不知道如何让它们一起工作。我是否需要重新格式化并将所有内容放入shinyServer
函数中?我有大约 250 行代码,将它们全部放在那里感觉不对,并且仅仅将数据提取部分放在那里可能会打乱事物的顺序。任何帮助表示赞赏。