как отправить несколько типов данных (массив, строка и т.д.) В mongodb С помощью Shiny?

#r #mongodb #shiny

#r #mongodb #блестящий

Вопрос:

Я настраиваю форму и сохраняю пользовательские данные в базе данных mongodb с помощью Shiny. Одним из входных данных является массив, и если я использую selectizeInput, все остальные данные становятся массивом.

Я подумал, что это может быть функция sapply, и попробовал также mapply, но получил тот же результат. вот часть кода. Я добавил только часть, связанную с проблемой.

 textInput("description"),
selectizeInput("tags", "Tags:", NULL, multiple = TRUE, options=list(create=TRUE)),

 formData <- reactive({
  data <- sapply(c("description", "tags"), function(x) input[[x]])
  data <- c(data, timestamp = epochTime())
  data <- t(data)
  data
})  
  

сохранение в mongdb:

 saveData <- function(data) {
db <- #connection is here
data <- as.data.frame(data)
db$insert(data)
}

saveData(formData())
  

Комментарии:

1. в чем проблема, с которой вы столкнулись?

2. если я использую selectizeInput , он вставляет все в виде массива: допустим, это входные данные: description: "something", tags: ["first", "second"] , которые я вижу в базе данных как description: [0:"something"], tags: [0:"first", 1:"second"] . чего я хочу, так это description: "something", tags: [0:"first", 1:"second"] . Я надеюсь, это понятно.

Ответ №1:

Нашел ответ, просто нужно добавить toJSON с auto_unbox=TRUE помощью. Это было простое решение.