蒙古石最佳实践

时间:2016-08-01 14:49:51

标签: r opencpu mongolite

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

我注意到,如果我不是每次都连接到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)
    }
}

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

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

这样,我的变量&#34; dbConnection&#34;该方法未知。

我尝试了其他几种使用&lt;&lt;的方式 - 我认为这不是一个很好的方法。我也尝试使用exists()代替is_null。

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

var req = ocpu.rpc("connect_mongodb", {})

由于连接到mongolite并不返回JSON对象,因此尝试也失败并出现以下错误 无法获得http://localhost:xxxx/ocpu/tmp/x07c82b16bb/ 的JSON响应 遗憾的是,jsonlite和rjson的jSON没有帮助将db对象转换为JSON

0 个答案:

没有答案