需要在反应式上下文中评估数据查询 .
一种方法是将数据查询本身移动到renderPlot()上下文中,例如
--server.R--
shinyServer(function(input, output) {
database
output$main_plot
table
paste("
SELECT a,b FROM table1
WHERE id = ",input$segment,"
AND created_at>='2015-08-01'
"))
plot(table$a,table$b)
})
})
但是,最好为数据构建一个反应导体,当发生任何更新并在多个反应 endpoints 重复使用时,可以对其进行一次评估(详见here) .
这看起来像是这样的:
--server.R--
shinyServer(function(input, output) {
database
table
dbGetQuery(database, statement =
paste("
SELECT a,b FROM table1
WHERE id = ",input$segment,"
AND created_at>='2015-08-01'
")
)
})
output$main_plot
plot(table()$a,table()$b)
})
})