This library provides a convenient JavaScript wrapper for common operations on MarkLogic V6's REST API. It abstracts authentication and common search settings to make it intuitive for a non MarkLogician to get started rapidly with MarkLogic.
Further information
- Install with
npm install mldb
- Read the API documentation
- And the rest of the WIKI
- And perhaps the design principles document
Targets for V 0.2 (Dec 2012) in descending order of importance
- DONE abstract authentication (digest and basic)
- DONE support creation of database and rest api on the fly
- DONE provide document save, get, update
- DONE access all documents within a directory (mldb.list)
- DONE access all documents within a collection (mldb.collect)
- DONE add ACID transaction support across calls to the db
- DONE provide access to document properties fragment (all metadata)
- DONE basic searching (aka search:search), with facets
- DONE heavily document ALL quick start examples, with task orientated alternatives, and link back to REST docs on website
- DONE handle errors elegantly
- DONE support simple json structured query
- DONE generic do function to invoke any REST API functionality I've not created a comprehensive helper method for
- DONE Complete testing of all core functionality
For more information See the wiki.
Targets for 0.4 (Feb 2013)
- DONE Utility function to save many docs in one go. (TODO: make transaction and fast aware)
- TEST Create a saved search with a name (default grammar, collection, geospatial proximity) (NB uses REST API Extension from myself)
- TEST subscribe/unsubscribe to saved searches (NB uses REST API Extension from myself)
- TEST no auth (default user)
Targets for 0.6 (Apr 2013) - for MarkLogic World 2013
- DONE Browser: Execute mldb from within general JavaScript, not just NodeJS (requires many wrappers, refactoring, extra tests)
- DONE Core: search options persistence support
- DONE Core: structured search support
- DONE Widgets: basic demonstration samples for graphs based on MarkLogic data (Highcharts - shipped with MarkLogic)
- DONE browser distribution building script
- IN PROGRESS Widgets: Search widgets, and overarching search page widget UI layer over MLDB in browser, including custom result rendering plugins (search bar, facets, results, paging, sorting)
- Sorting widget actions
- More... all... links in facets
- BUG: one page too many in results if results are multiple of page size (i.e. 30 gives you 4 pages, not 3)
- BUG: multi word facet selection causes search to be limited to first word only (no quotes) -> query parser, not facet issue
- DONE Widgets: graphs to support simple aggregations of query results (mean, sum, min, max, count)
- DONE Widgets: example for joining search bar to graphs, using different aggregations for the same results
- DONE Widgets: Co-occurence widget
- DONE Core: Added values() function for lexicon and co-occurence (GET /v1/values/[name])
- DONE Widgets: Google Kratu Analytics widget linked to MarkLogic search results
- IN PROGRESS Core: support XML returned as well as JSON
- DONE Core: include XML -> JSON transform in JavaScript (workaround for XML snippets / raw returned in search results even with format=json enabled)
- DONE Widgets: Pretty print utility for errors in JSON and XML (Probably requires XML -> JSON utility. Errors are always XML, unless configured on server otherwise.)
- IN PROGRESS Widgets: Update search samples to include one set of mixed XML and JSON documents
- DONE Widgets: Update search samples to include a custom renderer for one document type
- Widgets: File upload (single and multiple)
- IN PROGRESS Core: Search Options Builder
- IN PROGRESS Core: Structured Search Builder
- TEST Browser: prototype.js binding
- TEST Browser: XMLHttpRequest (xhr) binding
- IN PROGRESS Docs: Samples for XML use, equivalent to some of the existing JSON samples (not exhaustive)
- Tests: Test samples for xml content
Targets for 0.8 (Jun 2013)
- Core: Return and add binary documents
- Core: Return and add plain text documents
- Widgets: (multi) Upload progress bar
- Widgets: D3.js network diagram
- Widgets: XML/JSON document creation-by-example (via HTML form generator)
- Widgets: Support for using widgets in non ML 6 REST webapps, and embedding widgets remotely, via W3C CORS support (i.e. cross site support)
- Widgets: Create search context object, and make search widgets responsible for registering themselves with it. Refactor search execution code in to here.
- Widgets: Navigable charts / co-occurence - clicking sets facet value
- Widgets: Abstract enough to plug in Version 5 REST Wrapper results, as required (Corona?)
- Widgets: Support array children in aggregations for graphs
- Browser: Lazy loading on search results (E.g. when requesting page 2 result 3 (result 13), make http request for re-search transparent) - Also for graphing when all search results need loading
- Easy geospatial search
- Widgets: Google maps (via OpenLayers?)
- Support all search functions not currently provided
- Complete support for /v1/values REST function
- More support for server management (namespaces, indexes, service extensions, update REST instance configuration, XSLT transform management)
- Widgets: Administration widgets (mainly aimed at pre-sales developers, not sysadmins)
- Support nested cts:search (if possible)
- Support for binary and plain text file save/get/search
- CSV and TSV utilities
- NodeJS: Support SSL
- NodeJS: SSL with Basic
- NodeJS: SSL with Digest
- NodeJS: Basic + Digest non SSL
- NodeJS: SSL Basic + Digest
- NodeJS: SSL no auth (default user)
- NodeJS: Support 'anyauth' option, much like curl (i.e. auth method auto detection)
- support arbitrary XPath for searches (if possible)
- allow upload and use of XSLT for result transform
- Widget: Table - allow binding of JSON search results to jQuery table (for example)
- Widget: Table - allow binding of XML search results to jQuery table (for example)
- Widget: Tree - browse JSON/XML documents in search results as a tree
- Widget: Timeline (point in time and start / stop dates)
- Widget: Rose - direction (N, S etc) and time (12 and 24 hour) - arbitrary categories
- NodeJS: Provide REST API proxy within NodeJS wrapper
- Browser: Support REST API proxy within general javascript and nodejs javascript code
Targets for 1.0 (Aug 2013)
- Support current functionality against MarkLogic V7
Not applicable / dropped / postponed targets
- N/A sensible to/from json settings (Default on &format=json on server)
- N/A documented on WIKI - Generate JavaScript API docs and publish somewhere browseable on the web