我创建了一个Shiny应用程序,它从数据库中提取数据。我在UI部分有许多输入,在服务器部分有许多输出。
在服务器部分,我有一个反应函数,它使用一些输入构建查询,然后从数据库中提取数据,例如:
queriedData <- reactive({
query <- paste0(...,input$a,...);
return(db$find(query))
})
在输出槽中,我指的是使用
中的数据x <- queriedData()
我的问题是:
答案 0 :(得分:2)
回答你的问题:
queriedData
(这是一个反应式表达式)将无效,因此每次从input$a
收到无效标志时都会更新。由于数据库查询是该计算的一部分,因此您的假设是正确的。input$a
没有更改,因此queriedData
未失效,则只会返回缓存的数据。但是,input$a
确实发生了更改,queriedData
会重新计算,因此会产生查询。queriedData
。请记住,反应性表达并不一定需要作为输入。举几个例子:
query <- reactive({paste0(...,input$a,...)})
queriedData <- reactive({
db$find(query())
})
output$thedata <- renderDataTable(queriedData())
现在,input$a
中的更改将使query
无效,从而触发其重新计算。 query
,一个反应式表达式,将使queriedData()
无效,从而触发其重新计算。这将使output$thedata
无效,因此也会导致重新计算该部分,从而导致数据表中显示新数据。