小编AGA*_*AGA的帖子

蒙古石最佳实践

我正在使用OpenCPU和R开发一个应用程序,我对两者都是全新的.我使用mongolite包连接到MongoDB.每次都有多次调用DB并连接,需要很长时间.加上数据处理,绘图等需要花费大量时间来加载具有生成的图的页面.在许多情况下,我必须绘制从多个集合中获取数据.

我注意到,我能够节省3-4秒(每个连接),如果我不连接每一次分贝,而使用现有连接.

如果有人能用最好的方法来指导我是否已经建立了与DB的连接,那将会很棒.

让我简要介绍一下到目前为止我做了什么!

这是我的connect_to_db.R文件

library(mongolite)

dbConnection <- NULL

connect_mongodb = function() {
db={
      if(is.null(dbConnection)){  # connect to DB only if connection is NULL, else return global connection object
        m <- mongo(collection = myCollection, db = myDb, url = myUrl)
        assign("dbConnection", m, envir = .GlobalEnv)
      }
      return(dbConnection)
    }
}
Run Code Online (Sandbox Code Playgroud)

它用于获取文件并从R控制台运行它.但是,当我在opencpu服务器中使用它时,我从另一个用于绘图的R方法调用connect_mongodb方法.我从javascript文件中调用绘图方法如下.

var req = $("#plot").rplot(myPlottingMethod, options).fail(function(){
    alert("Error loading results");
})
Run Code Online (Sandbox Code Playgroud)

这样,我的变量"dbConnection"对于该方法是未知的.

我尝试了其他一些使用<<的方式 - 我读的并不是一个很好的方法.我也尝试使用exists()代替is_null.

我尝试了另一种选择,使用ocpu.rpc调用从我的javascript文件调用我的connect_mongodb方法,并将其作为参数传递给rplot调用中的R方法.

var req = ocpu.rpc("connect_mongodb", {})
Run Code Online (Sandbox Code Playgroud)

由于连接到mongolite不会返回一个JSON对象,这个尝试也失败了以下错误 无法获取http:// localhost:xxxx/ocpu/tmp/x07c82b16bb的 JSON响应/ 遗憾的是,jsonlite的jSON和rjson没有帮助转换db对象为JSON

r opencpu mongolite

7
推荐指数
0
解决办法
922
查看次数

标签 统计

mongolite ×1

opencpu ×1

r ×1