RethinkDB:​​在r.js方法中加载NodeJS包

时间:2015-11-09 10:33:44

标签: javascript rethinkdb

我不确定是否可能。 我需要在nodeJS包中使用我的ReQL中的t分布。代码是这样的:

    Query.map(function(doc){
      return {
               'DesScore': r.do(doc('MXt'),
                                doc('MXdf'), 
                                r.js('(function(v,df){
                                       var distributions = require("distributions.js");
                                       var studentt = distributions.Studentt(df);
                                       return studentt.inv(-1.*Math.abs(v))*2.*100.;}) '))
             };
    })

但是我得到了

Unhandled rejection ReqlQueryLogicError: ReferenceError: require is not defined in:

如何在ReQL js解释器中加载包?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您无法在require中使用r.js因为它是JavaScript v8,而不是NodeJS。 require来自NodeJS API,它不是标准JavaScript。在JavaScript客户端,人们使用browserify(或朋友)来实现此目的。因此,要使用require,您必须在r.js内部为require实现一个垫片,这也可能会将其它依赖项拉出来......

除此之外,您还必须以某种方式将依赖关系分发给RethinkDB服务器本身以使其工作。

所有这些都是一团糟。所以可能试图找到另一种解决方案。

r.js视为最后一种做法,尽可能尝试使用本机ReQL,如文档所述:

https://www.rethinkdb.com/api/javascript/js/

使用forEeachdobranch之类的控制结构,我认为你可以用它做很多事情。