Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CouchDB::View::DocumenUser Contributed Perl DocumentCouchDB::View::Document(3)

NAME
       CouchDB::View::Document - CouchDB design	document abstraction

SYNOPSIS
	 my $doc = CouchDB::View::Document->new({
	   _id => "_design/mystuff",
	   views => {
	     by_name =>	sub {
	       my ($doc) = @_;
	       dmap($doc->name,	$doc);
	     },
	     by_whatsit	=> sub {
	       my ($doc) = @_;
	       require Whatsit::Parser;
	       dmap(Whatsit::Parser->parse($doc), $doc);
	     },
	   },
	 });

	 # use with a hypothetical client
	 $couchdb_client->put(
	   '/mydatabase/' . $doc->uri_id,
	   $doc->as_json,
	 );

DESCRIPTION
       CouchDB::View::Document provides	a Perlish interface to creating
       CouchDB views <http://wiki.apache.org/couchdb/HttpViewApi>.  It uses
       Data::Dump::Streamer to serialize coderefs, which are deserialized and
       used by CouchDB::View::Server.

WRITING	VIEWS
       Read the	CouchDB	wiki page on views
       <http://wiki.apache.org/couchdb/Views> if you have not already.	Only
       Perl specifics will be mentioned	here.

       The "map" function is already used in Perl.  Instead, use "dmap()" (as
       in the "SYNOPSIS") to map keys to values.

       Perl does not have "null".  Use "undef".

       All the limitations of Data::Dump::Streamer apply to your view
       functions.  In particular, if they use external modules,	they will need
       to "require" or "use" them explicitly (see the Whatsit::Parser example
       in the "SYNOPSIS").  Likewise, closed-over variables will be dumped,
       but external named subroutines will not,	so this	won't work:

	 sub elide {
	   my $str = shift;
	   $str	=~ s/^(.{10}).+/$1.../;
	   return $str;
	 }

	 my $doc = CouchDB::View::Document->new({
	   ...
	   views => {
	     elided => sub {
	       dmap(elide($doc->{title}), $doc);
	     }
	   },
	 });

       The definition of "elide" is not	transferred to the view	server.

METHODS
   new
	 my $doc = CouchDB::View::Document->new(\%arg);

       Create a	new design document.  See the CouchDB view API
       <http://wiki.apache.org/couchdb/HttpViewApi> for	the details of
       "\%arg",	though "language" is ignored (always 'text/perl').

   as_json
	 print $doc->as_json;

       Use "as_hash" (below) and JSON::XS to encode the	result.	 This is
       suitable	for passing directly to	a PUT to CouchDB.

   uri_id
	 print $doc->uri_id;
	 # '_design%2Fmyview'

       Convenience method for the document name, since '/' must	be escaped.

   as_hash
	 print Dumper($doc->as_hash);

       Return a	hashref	suitable for serializing to JSON, including serialized
       coderefs.

   code_to_string
       This method is called with a coderef and	is expected to return a
       serialized representation of it.	 You probably don't need to use	this
       unless you're subclassing CouchDB::View::Document.

SEE ALSO
       CouchDB::View::Server CouchDB::View

perl v5.32.1			  2008-05-17	    CouchDB::View::Document(3)

NAME | SYNOPSIS | DESCRIPTION | WRITING VIEWS | METHODS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=CouchDB::View::Document&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help