【问题标题】:Unique session in a "live" Shiny dashboard“实时”闪亮仪表板中的独特会话
【发布时间】:2020-03-27 17:23:42
【问题描述】:

在工作中,我们使用 Shiny 开发管理仪表板。信息源以前是从数据库中提取的平面文件,但现在我们正在尝试开发一个“实时”仪表板,允许用户从仪表板中查询数据库。使用 url 访问仪表板,无需登录即可查看仪表板。只需指向浏览器,仪表板就会加载。

除了一个问题外,我的工作正常。如果两个用户同时使用仪表板,运行相同的查询并创建相同的表,则结果可能会混合。一位用户将看到另一位用户的结果。

使用运行以下函数的 actionButton 运行查询:

dataTbl <- function(<select criteria>) {
  sqlQuery(connection, "select * from ... ")
}

如何让每个用户拥有自己独特的会话,以便在任何时候无论有多少用户,每个用户都是独立的并且独立于其他用户?

【问题讨论】:

  • 可能是你在修改全局变量
  • 是的,这是真的。函数用于运行 sql 脚本。例如:dataTbl

标签: r shiny shinydashboard


【解决方案1】:

你可以做字符串搜索和替换,我也建议你使用promises包做查询https://rstudio.github.io/promises/articles/shiny.html

dataTbl <- function(table,products) {
  qr <- "select * from TABLE where product = PRODUCTS"
  qr <- gsub("TABLE",table,qr)
  qr <- gsub("PRODUCTS",products,qr)
  sqlQuery(connection,qr)
}

【讨论】:

  • 关于 SQL 注入的警告,如果从输入中读取,用户可以在产品中输入 SQL 命令。以glue 包为例
  • 这个例子是我们使用的,但用户只有有限的选项选择。不能手动输入他们自己的标准。然而,问题更多在于将每个用户的会话分开。
  • 如果他们没有将应用程序公开并在组织内使用它,应该没问题
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 2019-06-20
  • 2016-05-02
  • 2023-03-22
  • 2018-05-30
  • 1970-01-01
相关资源
最近更新 更多