R:将数据发送到Firebase

R:将数据发送到Firebase,r,firebase,shiny,shinyjs,R,Firebase,Shiny,Shinyjs,我想使用shiny将一些数据发送到Firebase,这是我的app.R的简化版本: library(shiny) library(shinyjs) callFB <- "shinyjs.FB = function(){ var config = { apiKey: 'my_apiKey', databaseURL: 'my_databaseURL' }; firebase.initializeApp(config); va

我想使用shiny将一些数据发送到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)
我已经在一个普通的html文件中测试了js代码,效果很好。似乎导致错误的行是最后一行
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)
库(闪亮)
图书馆(shinyjs)

在您的示例中,调用不起作用的FB您正在调用
js$FB()
-什么是
FB()
FB
来自
shinyjs.FB
,它基本上是函数的调用方式。这里还有一个例子:
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)