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:erroranddoc.
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 --prettyStringifying 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.jsbecomes:
{
"_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
5 years ago
8 years ago
8 years ago
8 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
10 years ago