Build CouchDB documents from fs.
npm install couchdb-compilecompile(source[, options], callback)* source - Can be an object, a CouchDB Directory Tree (see below), a JSON file or a CommonJS module
* options.index - When set to true, folders are searched for index.js, which, if present, is treated as CommonJS module. Default is false.
* options.multipart - When set to true, attachments are handled as multipart. Default is false.
* callback - called when done with two arguments: error and doc.
In case options.multipart is set, callback is called with a third argument:attachments. This is a multipart attachments array as required by nanosdb.multipart.insert:
``js`
{
name: 'rabbit.png',
content_type: 'image/png',
data:
}data can be a Buffer or a String.
`js`
var compile = require('couchdb-compile');
compile('project/couchdb', function(error, doc) {
// doc is a compile object now
});
`sh`
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.
`sh`
couchdb-compile project/couchdb
couchdb-compile project/couchdb --pretty
If there is a function inside source (passed as object or path to CommonJS
module), functions get stringified by calling toString on them.
eg:
`js`
compile({
foo: function () {
return 42
}
}, (error, result) => {
// {
// foo: 'function () {\n return 42\n}'
// }
})
uses a filesystem mapping similar to Couchapp python
tool and
Erica:
The Couchapp Filesystem
Mapping.It is quite self-explanatory. For example:
`sh
myapp
├── _id
├── language
└── views
└── numbers
├── map.js
└── reduce.js
`becomes:
`json
{
"_id": "_design/myapp",
"language": "javascript",
"views": {
"numbers": {
"map": "function...",
"reduce": "function..."
}
}
}
`See
test/fixtures and test/expected for usage examples.
$3
If you do not include an
_id property, the filename will be used.
$3
For property names file extensions will be stripped:`js
{
"validate_doc_update": "content of validate_doc_update.js",
}
`$3
Files inside the _attachments directory are handled special:
They become attachment entries of the form`js
{
"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
`sh
npm test
``(c) 2014-2018 Johannes J. Schmidt
Apache 2.0 License