多个用户同时编辑同一个(DT)表

问题描述 投票:0回答:1

是否可以让多个用户同时修改同一个 DT 表(如 google doc / excel ...)?我们有一个带有表格的应用程序,连接到该应用程序的用户需要在表格中添加评论。但是如果有多个用户在任何人添加评论之前加载了该页面,那么最后一个添加的用户会删除所有先前输入的评论。我用 MongoDB 做过这种事情,但对于这个应用程序,我们希望保持闪亮。你知道如何规避这个问题吗?如果 Shiny 包存在,即使它与 DT 无关? 非常感谢,如果我能澄清这个问题,请告诉我!!

r shiny dt data-synchronization
1个回答
0
投票

这可以使用全局

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)

第一个会话中的 DT 编辑出现在第二个会话中,反之亦然:

© www.soinside.com 2019 - 2024. All rights reserved.