R блестящий: отправить данные в Firebase
Я хотел бы отправить некоторые данные в Firebase, используя блестящий, это упрощенная версия моего app.R
:
library(shiny)
library(shinyjs)
callFB <- "shinyjs.FB = function(){
var config = {
apiKey: 'my_apiKey',
databaseURL: 'my_databaseURL'
};
firebase.initializeApp(config);
var database = firebase.database();
var id = database.ref('test').push().key;
var myData = 'hello';
console.log(id); // OK
console.log(myData); // OK
console.log(database); // OK
database.ref('test/' + id + '/').update({myData}).then(function() {
console.log('myData sent!');
}); // ERROR
}"
ui <- fluidPage(
mainPanel(
tags$head(tags$script(src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js")),
tags$head(tags$script(src="https://www.gstatic.com/firebasejs/5.0.4/firebase.js")),
useShinyjs(),
extendShinyjs(text = callFB),
textOutput("sendFB")
)
)
server <- function(input, output, session) {
output$datauri <- renderText({
js$FB()
return("data sent")
})
}
shinyApp(ui = ui, server = server)
Это однако возвращает ошибку:
> runApp()
Error: shinyjs: Error parsing the JavaScript code provided.
Я уже проверил JS-код в обычном HTML-файле, и он работает просто отлично. Строка, которая, кажется, вызывает ошибку, является последней database.ref...
Есть идеи, что может быть причиной этой ошибки? Есть ли другой способ справиться с этим?
редактировать
По какой-то неизвестной причине это работает:
library(shiny)
library(shinyjs)
callFB <- "shinyjs.FB = function(){
var config = {
apiKey: 'my_apiKey',
databaseURL: 'my_databaseURL'
};
firebase.initializeApp(config);
var database = firebase.database();
var id = database.ref('test').push().key;
var myData = 'hello';
database.ref('test/' + id + '/').update({myData}).then(function() {
console.log('myData sent!');
});
}"
ui <- fluidPage(
mainPanel(
tags$head(tags$script(src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js")),
tags$head(tags$script(src="https://www.gstatic.com/firebasejs/5.0.4/firebase.js")),
useShinyjs(),
textOutput("sendFB")
)
)
server <- function(input, output, session) {
output$datauri <- renderText({
runjs(callFB)
return("data sent")
})
}
shinyApp(ui = ui, server = server)