couchdb-compile v1.11.2
couchdb-compile
Build CouchDB documents from directory, JSON or module.
API
compile(source[, options], callback)
source
- Can be an object, a CouchDB Directory Tree (see below), a JSON file or a CommonJS moduleoptions.index
- When set totrue
, folders are searched forindex.js
, which, if present, is treated as CommonJS module. Default isfalse
.options.multipart
- When set totrue
, attachments are handled as multipart. Default isfalse
.callback
- called when done with two arguments:error
anddoc
.
In case options.multipart
is set, callback
is called with a third argument:
attachments
. This is a multipart attachments array as required by nanos
db.multipart.insert
:
{
name: 'rabbit.png',
content_type: 'image/png',
data: <Buffer>
}
data
can be a Buffer
or a String
.
Example
var compile = require('couchdb-compile');
compile('project/couchdb', function(error, doc) {
// doc is a compile object now
});
CLI
couchdb-compile [SOURCE] [OPTIONS]
When SOURCE
is omitted, the current directory will be used.OPTIONS
can be --index
and --pretty
, see above.
Use --pretty
to get a pretty printed json output.
Example
couchdb-compile project/couchdb
couchdb-compile project/couchdb --pretty
Stringifying Functions
If there is a function inside source (passed as object or path to CommonJS
module), functions get stringified by calling toString
on them.
eg:
compile({
foo: function () {
return 42
}
}, (error, result) => {
// {
// foo: 'function () {\n return 42\n}'
// }
})
The CouchDB Directory Tree
couchdb-compile
uses a filesystem mapping similar to Couchapp python
tool and
Erica:
The Couchapp Filesystem
Mapping.
It is quite self-explanatory. For example:
myapp
├── _id
├── language
└── views
└── numbers
├── map.js
└── reduce.js
becomes:
{
"_id": "_design/myapp",
"language": "javascript",
"views": {
"numbers": {
"map": "function...",
"reduce": "function..."
}
}
}
See test/fixtures
and test/expected
for usage examples.
IDs
If you do not include an _id
property, the filename will be used.
File Extensions
For property names file extensions will be stripped:
{
"validate_doc_update": "content of validate_doc_update.js",
}
Attachments
Files inside the _attachments
directory are handled special:
They become attachment entries of the form
{
"a/file.txt": {
"data": "SGVsbG8gV29ybGQhCg==",
"content_type": "text/plain"
}
}
The content_type
is computed using
mime, with a fallback to
application/octet-stream
. data
is the base64 encoded value of the file.
Read more about Inline Attachments.
Tests
npm test
(c) 2014-2018 Johannes J. Schmidt Apache 2.0 License
4 years ago
4 years ago
4 years ago
7 years ago
7 years ago
8 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago