r闪亮的观察功能可清除文本输入

时间:2018-12-11 00:46:33

标签: r api shiny

您好,我正在尝试建立一个与API服务联系并验证用户凭据的登录页面。如果凭据正确,则会出现一个新的用户界面,并进行绘制。如果不正确,则在登录屏幕上会显示一条消息,提示“登录错误”。当前,当我尝试在登录页面(ui1.r)中输入任何一个字段时,该字段会在大约一秒钟后刷新/擦除自身,从而阻止了我将用户输入传递给API。我有以下文件

server.r:

rm(list = ls())
library(shiny)
library(dplyr)
library(shinyjs)
umls <- dbConnect(drv=RSQLite::SQLite(), 
                  dbname="/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_browser.sqlite3")
licenseCode <- "mylicense"



shinyServer(function(input, output) {

  source('ui1.R') #login page



  output$page <- renderUI({ ui1 })

  observe({
    z<-system(paste("perl", "/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_auth.pl",
                    input$user, input$password),intern=TRUE)
    if (grepl("false",z[22])) {
      renderText("incorrect login")
    }
    if (grepl("true",z[22])) 
    {
      output$page <- renderUI({ ui2 })
      output$table <- renderTable({mtcars()})
    }
  })

})

ui1.r

ui1 <- shinyUI(fluidPage(


      # Application title
      titlePanel("UMLS Constraint Browser"),

      # Sidebar with a slider input for number of bins 
      sidebarLayout(
        sidebarPanel(
          textInput("user", "User",""),
          textInput("password", "Password",""),
          actionButton("login", "Login")

        ),
        mainPanel(
          tableOutput("table")
        )
      )
    ))

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

我认为问题来自observe函数。每次您写一封信时,它都会向您的凭证数据库发送一个请求。你应该尝试使用 改为ObserveEvent

shinyServer(function(input, output) {

observeEvent(input$login, {
z<-system(paste("perl", "/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_auth.pl",
                input$user, input$password),intern=TRUE)
if (grepl("false",z[22])) {
  renderText("incorrect login")
}
if (grepl("true",z[22])) 
{
  output$page <- renderUI({ ui2 })
  output$table <- renderTable({mtcars()})
}  })

})

在这里,仅当用户单击登录按钮时才发出请求。告诉我它是否适合您。