got reduce support working for javascript views
This commit is contained in:
parent
81d27c6f16
commit
80c50ccf8f
|
@ -13,8 +13,16 @@ class CouchRest
|
||||||
CouchRest.get "#{@root}/_all_docs"
|
CouchRest.get "#{@root}/_all_docs"
|
||||||
end
|
end
|
||||||
|
|
||||||
def temp_view func
|
def temp_view map, reduce = nil
|
||||||
JSON.parse(RestClient.post("#{@root}/_temp_view", func, {"Content-Type" => "text/javascript"}))
|
if reduce
|
||||||
|
funcs = {
|
||||||
|
:map => map,
|
||||||
|
:reduce => reduce
|
||||||
|
}
|
||||||
|
else
|
||||||
|
funcs = map
|
||||||
|
end
|
||||||
|
JSON.parse(RestClient.post("#{@root}/_temp_view", JSON.unparse(funcs), {"Content-Type" => "text/javascript"}))
|
||||||
end
|
end
|
||||||
|
|
||||||
def view name
|
def view name
|
||||||
|
|
|
@ -16,7 +16,7 @@ describe CouchRest::Database do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "query with _temp_view in Javascript" do
|
describe "map query with _temp_view in Javascript" do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@db.bulk_save([
|
@db.bulk_save([
|
||||||
{"wild" => "and random"},
|
{"wild" => "and random"},
|
||||||
|
@ -30,6 +30,20 @@ describe CouchRest::Database do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "map/reduce query with _temp_view in Javascript" do
|
||||||
|
before(:each) do
|
||||||
|
@db.bulk_save([
|
||||||
|
{"beverage" => "beer", :count => 4},
|
||||||
|
{"beverage" => "beer", :count => 2},
|
||||||
|
{"beverage" => "tea", :count => 3}
|
||||||
|
])
|
||||||
|
end
|
||||||
|
it "should return the result of the temporary function" do
|
||||||
|
rs = @db.temp_view("function(doc){map(doc.beverage, doc.count)}", "function(beverage,counts){return sum(counts)}")
|
||||||
|
rs['result'].should == 9
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "select from an existing view" do
|
describe "select from an existing view" do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
r = @db.save({"_id" => "_design/first", "views" => {"test" => "function(doc){for(var w in doc){ if(!w.match(/^_/))map(w,doc[w])}}"}})
|
r = @db.save({"_id" => "_design/first", "views" => {"test" => "function(doc){for(var w in doc){ if(!w.match(/^_/))map(w,doc[w])}}"}})
|
||||||
|
@ -98,7 +112,6 @@ describe CouchRest::Database do
|
||||||
lambda do
|
lambda do
|
||||||
@db.get('twoB')
|
@db.get('twoB')
|
||||||
end.should raise_error(RestClient::Request::RequestFailed)
|
end.should raise_error(RestClient::Request::RequestFailed)
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue