从couchdb向lib / serverSide_library.js提供服务

时间:2014-03-17 09:38:37

标签: couchdb

我有一个javascript文件,需要在服务器端和客户端之间共享。

背景

该文件包含验证码,我想将它用于客户端和服务器端验证(因此两者保持同步),我还需要客户端的库在浏览器单元测试中做。

我正在使用couchapp。

要点:

如何向服务器端提供服务器端javascript文件?

1 个答案:

答案 0 :(得分:0)

添加

{ 
  "include_design": "true" 
}

到couchapp根目录中的options.json

然后视图可以包含设计文档,您必须编辑现有视图以使它们不发出设计文档。

然后添加views/design/map.js

function(doc) {  
    if (typeof String.prototype.startsWith != 'function') {
        String.prototype.startsWith = function (sub){
            var self=this;
            return self.substring(0, sub.length) === sub;
        }
    };

    var id = doc._id;

    if (id.startsWith( "_design/")){
        emit(null, null); // use query `include_docs=true`
    }
}

然后您可以编写类似

的列表
function  (head, req) {
    var ddoc = this;

    var dir=req.query["~dir"];
    var name=req.query["~name"];

    var Result="";

    function process(row){
        if (row.doc) {
            Result = row.doc[dir][name]; 
        } 
    }

    function mainLoop(){
        while (row = getRow() ) {
            process(row);
        }
    }

    mainLoop();

    send( Result);
}

重写

{ 
    "from": "server_lib/:~name",
    "to": "_list/sub/design",
    "query": {
        "~dir": "lib",
        "include_docs": "true"
    }
}

注意:我尝试查询"~path": [ "lib", ":~name" ], "include…,但在couchdb中似乎存在不一致(https://issues.apache.org/jira/browse/COUCHDB-2204),仅列出了关键查询的工作(这些是在couchdb中处理的代码)键不同)。