我有一个闪亮的应用程序,它带有一个selectizeInput
小部件,该小部件可以从远程数据库中以响应数据的形式获取其大约26000个选择。
使用远程数据库和反应性是为了避免在加载选择时出现滞后和缓慢。
问题是,当在本地桌面上启动时,它可以正常工作,但当在Shinyapps.io上上传时,该小部件不会向用户显示所有可用选项。
我一直在使用widgets属性无济于事,例如,设置 SERVER =TRUE
等。
我在下面放置了我正在使用的代码以及指向要加载到selectizeInput
的数据的链接作为选择。
UI部分
library(shiny)
library(DBI)
library(RMySQL)
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
skin="yellow",
dashboardHeader( ),
#sidebar content
dashboardSidebar(
sidebarMenu(
selectInput(
inputId="selectData",
label=" ", selected = NULL,
choices=c( "title" )),
menuItem("Titles Search", tabName = "Titles", icon = icon("font"))
)
),
dashboardBody(
tags$head(
tags$style(HTML("
.content-wrapper {
background-color: green !important;
}
.main-header {
background-color: red !important;
}
"))
),
tabItems(
tabItem(tabName = "Titles",
fluidRow(
column(width=3,
box(
title=" ",
solidHeader=TRUE,
collapsible=TRUE,
width=NULL,
selectizeInput('titles', label = "Search by title",
choices = NULL, options = list(
placeholder = 'Type the title', maxOptions = 1000,
maxItems = 100,multiple = F, searchConjunction = 'and')),
tags$style(type="text/css",
".selectize-
input::after{visibility:hidden;};"
)
)
)
)
)
)
)
)
服务器部分
library(shiny)
library(DBI)
library(RMySQL)
library(shinydashboard)
library(shinyjs)
shinyServer(function(input, output, session) {
con <- dbConnect(MySQL(), user='XXXX',
port = 3306, password='XXXXX',
dbname='XXXXXX',
host='XXXXXXXX' )
query <- function(...) dbGetQuery(con, ...)
on.exit(dbDisconnect(con), add = TRUE)
selectedData <- reactiveValues()
observeEvent(input$selectData, {
con <- dbConnect(MySQL(), user='XXXXXX', port = 3306, password='XXXX', dbname='XXXXX', host='XXXXXXX' )
query <- function(...) dbGetQuery(con, ...)
on.exit(dbDisconnect(con), add = TRUE)
if (input$selectData == "title") {
selectedData$titledata <- query("SELECT titles FROM titles ;")
}
updateSelectizeInput(session, "titles",
choices = as.character(unique(selectedData$titledata$titles)),
server = TRUE)
})
session$onSessionEnded(function() { dbDisconnect(con) })
})
我在做什么错?是Shinyapps.io问题还是编码问题?
答案 0 :(得分:2)
似乎您要选择的项目数量受到限制。您似乎加载了大约1000个项目。
如果您查看选择文档here,则有一个选项maxOptions
默认为1000。您甚至可以在用户界面中将此值设置为1000。您的默认数据集包含25k +个选项。
updateSelectizeInput
。