【发布时间】:2013-05-20 05:49:14
【问题描述】:
Helo 伙计们,
我正在处理 couchdb 中的视图。而且,在“提取”列表功能中,我试图使用该视图(myView)过滤掉一些信息。从连接到 couchdb 的客户端,我想做一件大事 - 显示“提取”列表函数的结果。但是,我还想对“提取”函数返回的结果执行多项其他操作。所有其他操作中的一个简单操作是“求和”。但是,还有许多其他功能,例如计算“提取”列表函数结果的中值/标准偏差等。
{
"_id": "_design/myDesigndoc",
"lists": {
"extract": "function(head, req){ ...*extract some info the view*: **myView** ...}",
"sum" : "function(head,req) {...**sum up all the values returned from the 'extract' function above**...}"
},
"views": {
"myView" : { "map" : "..." },
}
}
所以,我被困在某一点:-
由于整个设计文档是一个 Json 并且函数体是 javascript,有没有办法在“sum”、“median”、“standard deviation”等其他列表函数中调用“extract”列表函数?
我想这样做的原因:-
所有其他列表函数:“总和”、“标准差”等都期望“提取”函数的返回值作为输入。所以,在其他列表函数中复制提取函数的代码是我最不想做的事情。
有没有其他方法可以解决这个问题:-
是的,有办法。我原以为我会为所有这些功能使用除“myView”之外的另一个视图函数,并编写与“myView”中相同的“map”函数,但是,所有这些视图都将具有单独的“reduce”函数来计算“sum” ,“标准开发”等。 但是,这些视图的计算会导致大量资源使用,因为每次都会创建这些视图。
你们能提供比这更好的解决方案吗?
谢谢
【问题讨论】:
-
听起来您应该将
extract和sum的逻辑抽象为您可以通过CommonJS 包含并调用您的_list 函数的函数。
标签: javascript function couchdb couchdb-futon