Shiny APP показывает последние полученные данные mysql

Ниже приведен мой блестящий код, в котором я подключаюсь к удаленной базе данных mysql. Я получаю правильный результат в первый раз, а затем, когда у меня есть новые строки в mysql db, блестящий по-прежнему показывает старые данные, даже если я запускаю их в разных браузерах.

#загрузить библиотеки

library(stringr)
library(twitteR)
library(plyr)
library(ROAuth)
library(base64enc)
library(shiny)
require(RJSONIO)
library(RMySQL) # will load DBI as well

options(shiny.sanitize.errors = FALSE)

lapply( dbListConnections( dbDriver( drv = "MySQL")), dbDisconnect)

con <- dbConnect(dbDriver("MySQL"), user = "user_name", password = "passowrd", dbname = "db_name", host="remotehost.org")

on.exit(dbDisconnect(con))

сохранение данных в тестовой переменной

test <- dbGetQuery(con, paste("SELECT * FROM tablename WHERE columnname = '","'"))

# отображение данных в браузере

ui <- fluidPage(textOutput(outputId="jsonoutput"))

server <- function(input, output) {
  output$jsonoutput <- renderText({
    toJSON(list(NLP =  test))
  })


}

dbDisconnect(con)

shinyApp(ui = ui, server = server)

person vikas Sharma    schedule 22.10.2017    source источник


Ответы (1)


Я думаю, вам нужно поместить запрос внутри функции сервера, иначе он запускается только при инициализации приложения. Вы также можете добавить actionButton.

ui <- fluidPage(
    actionButton("action","Action Button"),
    textOutput(outputId="jsonoutput")
)

server <- function(input, output) { 
  test <- eventReactive(input$action,{ dbGetQuery(con, paste("SELECT * FROM tablename WHERE  
                                           columnname = '","'"))  
  })  
  output$jsonoutput <- renderText({
            toJSON(list(NLP =  test()))
            }) 
}
person Harlan Nelson    schedule 22.10.2017