3.3. Erlang¶
注解
默认情况下,已禁用Erlang查询服务器。阅读 configuration guide 关于为什么和如何启用它。
-
Emit
(Id, Value)¶ 发射 key -`值对以查看索引器进程。
fun({Doc}) -> <<K,_/binary>> = proplists:get_value(<<"_rev">>, Doc, null), V = proplists:get_value(<<"_id">>, Doc, null), Emit(<<K>>, V) end.
-
FoldRows
(Fun, Acc)¶ Helper迭代列表函数中的所有行。
参数: - Fun -- 函数对象。
- Acc -- 以前返回的值 Fun .
fun(Head, {Req}) -> Fun = fun({Row}, Acc) -> Id = couch_util:get_value(<<"id">>, Row), Send(list_to_binary(io_lib:format("Previous doc id: ~p~n", [Acc]))), Send(list_to_binary(io_lib:format("Current doc id: ~p~n", [Id]))), {ok, Id} end, FoldRows(Fun, nil), "" end.
-
GetRow
()¶ 从相关视图结果中检索下一行。
%% FoldRows background implementation. %% https://git-wip-us.apache.org/repos/asf?p=couchdb.git;a=blob;f=src/couchdb/couch_native_process.erl;hb=HEAD#l368 %% foldrows(GetRow, ProcRow, Acc) -> case GetRow() of nil -> {ok, Acc}; Row -> case (catch ProcRow(Row, Acc)) of {ok, Acc2} -> foldrows(GetRow, ProcRow, Acc2); {stop, Acc2} -> {ok, Acc2} end end.
-
Log
(Msg)¶ 参数: - Msg -- 将消息记录在 INFO 水平。
fun({Doc}) -> <<K,_/binary>> = proplists:get_value(<<"_rev">>, Doc, null), V = proplists:get_value(<<"_id">>, Doc, null), Log(lists:flatten(io_lib:format("Hello from ~s doc!", [V]))), Emit(<<K>>, V) end.
在map函数运行之后,可以在CouchDB日志中找到以下行(例如 /var/log/couchdb/couch.log ):
[Sun, 04 Nov 2012 11:33:58 GMT] [info] [<0.9144.2>] Hello from 8d300b86622d67953d102165dbe99467 doc!
-
Send
(Chunk)¶ 发送一个字符串 Chunk 作为回应。
fun(Head, {Req}) -> Send("Hello,"), Send(" "), Send("Couch"), "!" end.
上述函数产生以下响应:
Hello, Couch!
-
Start
(Headers)¶ 参数: - Headers -- 属性列表 response object .
初始化 列表函数 回应。此时,可以定义响应代码和头。例如,此函数重定向到CouchDB网站:
fun(Head, {Req}) -> Start({[{<<"code">>, 302}, {<<"headers">>, {[ {<<"Location">>, <<"http://couchdb.apache.org">>}] }} ]}), "Relax!" end.