是否可以让多个用户同时修改同一个 DT 表(如 google doc / excel ...)?我们有一个带有表格的应用程序,连接到该应用程序的用户需要在表格中添加评论。但是如果有多个用户在任何人添加评论之前加载了该页面,那么最后一个添加的用户会删除所有先前输入的评论。我用 MongoDB 做过这种事情,但对于这个应用程序,我们希望保持闪亮。你知道如何规避这个问题吗?如果 Shiny 包存在,即使它与 DT 无关? 非常感谢,如果我能澄清这个问题,请告诉我!!
这可以使用全局
reactiveVal
(在server
函数之外定义)来完成,它在会话之间共享。
以下是根据这里给出的例子:
library(shiny)
library(DT)
DF <- reactiveVal(iris) # cross session reactiveVal
ui <- fluidPage(
DTOutput('myTable')
)
server <- function(input, output, session) {
output$myTable = renderDT({DF()}, selection = 'none', rownames = F, editable = T)
proxy = dataTableProxy('myTable')
observeEvent(input$myTable_cell_edit, {
info = input$myTable_cell_edit
str(info)
i = info$row
j = info$col + 1 # column index offset by 1
v = info$value
tmpDF <- DF()
tmpDF[i, j] <- DT::coerceValue(v, DF()[i, j])
DF(tmpDF)
})
}
shinyApp(ui, server)