Yes! It work for me on CouchDB 1.3.
But on CouchDB 1.4 not worked :(
Thanks!

Hm..it works for me on CouchDB 1.5, but as Robert said, using native
query server is dangerous and since it's completely undocumented and
may use internal CouchDB API there is no any warranties that code will
work correctly in future releases.
--
,,,^..^,,,


On Sat, Nov 9, 2013 at 1:02 PM, first-l...@yandex.ru
<first-l...@yandex.ru> wrote:
It is very good!
But, i create validation function and see error:

Error: EXIT

{{badmatch,[]},
  [{couch_query_servers,new_process,3,
[{file,"couch_query_servers.erl"},{line,472}]},
   {couch_query_servers,lang_proc,3,
[{file,"couch_query_servers.erl"},{line,462}]},
   {couch_query_servers,handle_call,3,
[{file,"couch_query_servers.erl"},{line,322}]},
   {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,585}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

I am not understand Erlang code, and not see error details.
You have it working?

In /etc/couchdb/local.ini i added
[native_query_servers]
erlang = {couch_native_process, start_link, []}


Currently, this is possible only via native Erlang query server:

fun(NewDoc, OldDoc, {UserCtx}, SecObj) ->
    DbName = couch_util:get_value(<<"db">>, UserCtx),
    {ok, Db} = couch_db:open_int(DbName, [{user_ctx, UserCtx}]),
    {ok, Info} = couch_db:get_db_info(Db),
    DiskSize = couch_util:get_value(disk_size, Info),
    case DiskSize < 100000 of  %% ~100KB
      true ->
        ok;
      false ->
        throw({[{<<"forbidden">>, <<"quota limit reached">>}]})
    end,
    1
end.



--
,,,^..^,,,


On Sat, Nov 9, 2013 at 7:56 AM, first-l...@yandex.ru
<first-l...@yandex.ru> wrote:
Hello.

Can I get information about the database as a function of
validate_doc_update? For example, to find out the size of the database or
the number of documents.

Example:
function(newDoc, oldDoc, userCtx) {
   if ( thisDb.disk_size > 1000 ) throw({forbidden : 'you have exceeded
the
limit'});
}

It is possible?

Thanks.


Reply via email to