UNPKG

dobo

Version:

DBMS for Bajo Framework

26 lines 61.7 kB
<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Class: Dobo</title><!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="light"><div class="sidebar-container"><div class="sidebar" id="sidebar"><a href="/" class="sidebar-title sidebar-title-anchor">Dobo API</a><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="Dobo.html">Dobo</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-Lib.html">Lib</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#TPropType">TPropType</a></div><div class="sidebar-section-children"><a href="global.html#TRecordCountOptions">TRecordCountOptions</a></div><div class="sidebar-section-children"><a href="global.html#TRecordCreateOptions">TRecordCreateOptions</a></div><div class="sidebar-section-children"><a href="global.html#TRecordFilter">TRecordFilter</a></div><div class="sidebar-section-children"><a href="global.html#TRecordFindOptions">TRecordFindOptions</a></div><div class="sidebar-section-children"><a href="global.html#TRecordFindResult">TRecordFindResult</a></div><div class="sidebar-section-children"><a href="global.html#TRecordGetOptions">TRecordGetOptions</a></div><div class="sidebar-section-children"><a href="global.html#TRecordGetResult">TRecordGetResult</a></div><div class="sidebar-section-children"><a href="global.html#TRecordPagination">TRecordPagination</a></div><div class="sidebar-section-children"><a href="global.html#TRecordRemoveOptions">TRecordRemoveOptions</a></div><div class="sidebar-section-children"><a href="global.html#TRecordSort">TRecordSort</a></div><div class="sidebar-section-children"><a href="global.html#TRecordSortKey">TRecordSortKey</a></div><div class="sidebar-section-children"><a href="global.html#TRecordUpdateOptions">TRecordUpdateOptions</a></div><div class="sidebar-section-children"><a href="global.html#TValidator">TValidator</a></div><div class="sidebar-section-children"><a href="global.html#TValidatorBoolean">TValidatorBoolean</a></div><div class="sidebar-section-children"><a href="global.html#TValidatorDate">TValidatorDate</a></div><div class="sidebar-section-children"><a href="global.html#TValidatorNumber">TValidatorNumber</a></div><div class="sidebar-section-children"><a href="global.html#TValidatorString">TValidatorString</a></div><div class="sidebar-section-children"><a href="global.html#TValidatorTimestamp">TValidatorTimestamp</a></div><div class="sidebar-section-children"><a href="global.html#factory">factory</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"><div class="navbar-item"><a id="" href="https://www.npmjs.com/package/dobo" target="">NPM</a></div><div class="navbar-item"><a id="" href="https://github.com/ardhi/dobo" target="">Github</a></div><div class="navbar-item"><a id="" href="https://dobo.bajo.app/" target="">Dobo</a></div><div class="navbar-item"><a id="" href="https://bajo.app/" target="">Bajo</a></div></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><header><h1 id="Dobo-title" class="has-anchor">Dobo</h1><div class="class-description"><p>Dobo Database Framework for <a href="https://github.com/ardhi/bajo">Bajo</a>.</p><p>See ecosystem for available drivers &amp; tools</p></div></header><article><div class="container-overview"><h2 id="constructor" class="has-anchor">Constructor</h2><h3 class="name has-anchor" id="Dobo"><span class="type-signature"></span>new Dobo<span class="signature">()</span></h3><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line127">line 127</a></li></ul></dd></div></dl></div><h2 id="members" class="subsection-title has-anchor">Members</h2><h3 class="name has-anchor" id="connections"><span class="type-signature"></span>connections<span class="type-signature"> :Array.&lt;Object></span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.&lt;Object></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line197">line 197</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="drivers"><span class="type-signature"></span>drivers<span class="type-signature"> :Array.&lt;Object></span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.&lt;Object></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line192">line 192</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="features"><span class="type-signature"></span>features<span class="type-signature"> :Array.&lt;Object></span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.&lt;Object></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line202">line 202</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="schemas"><span class="type-signature"></span>schemas<span class="type-signature"> :Array.&lt;Object></span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.&lt;Object></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line207">line 207</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".aggregateTypes"><span class="type-signature">(static, constant) </span>aggregateTypes<span class="type-signature"> :Array.&lt;string></span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.&lt;string></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">['count', 'avg', 'min', 'max', 'sum']</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line140">line 140</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".alias"><span class="type-signature">(static, constant) </span>alias<span class="type-signature"> :string</span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">'db'</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line133">line 133</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".propType"><span class="type-signature">(static, constant) </span>propType<span class="type-signature"> :<a href="global.html#TPropType">TPropType</a></span></h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type"><a href="global.html#TPropType">TPropType</a></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line145">line 145</a></li></ul></dd></div></dl><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="init"><span class="type-signature">(async) </span>init<span class="signature">()</span></h3><div class="description"><p>Initialize plugin and performing the following tasks:</p><ul><li><a href="module-Lib.html#.collectDrivers">Collecting all drivers</a></li><li><a href="module-Lib.html#.collectConnections">Collecting all connections</a></li><li><a href="module-Lib.html#.collectFeatures">Collecting all features</a></li><li><a href="module-Lib.html#.collectSchemas">Collecting all schemas</a></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line219">line 219</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="modelCreate"><span class="type-signature">(async) </span>modelCreate<span class="signature">(name, options<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Create a new model:</p><ul><li>read corresponding schema</li><li>attempt to create table/database/collection accordingly</li></ul></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_model_create.js.html">method/model/create.js</a>, <a href="method_model_create.js.html#line3">line 3</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="modelDrop"><span class="type-signature">(async) </span>modelDrop<span class="signature">(name, options<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Drop database model</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_model_drop.js.html">method/model/drop.js</a>, <a href="method_model_drop.js.html#line3">line 3</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="modelExists"><span class="type-signature">(async) </span>modelExists<span class="signature">(name, thrown<span class="signature-attributes">opt</span>, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Check if model exists already</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>thrown</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default">false</td><td class="description last"><p>If <code>true</code> throw error if not exists instead of just silent</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_model_exists.js.html">method/model/exists.js</a>, <a href="method_model_exists.js.html#line5">line 5</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="pickRecord"><span class="type-signature">(async) </span>pickRecord<span class="signature">(options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Object}</span></h3><div class="description"><p>Pick only fields defined from a record</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Options object</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>record</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Record to pick fields from</p></td></tr><tr><td class="name"><code>fields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Array of field names to be picked</p></td></tr><tr><td class="name"><code>schema</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Associated record's schema</p></td></tr><tr><td class="name"><code>hidden</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">[]</td><td class="description last"><p>Additional fields to be hidden in addition the one defined in schema</p></td></tr><tr><td class="name"><code>forceNoHidden</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default"></td><td class="description last"><p>Force ALL fields to be picked, thus ignoring hidden fields</p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line279">line 279</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="prepPagination"><span class="type-signature">(async) </span>prepPagination<span class="signature">(filter<span class="signature-attributes">opt</span>, schema, options)</span><span class="type-signature"> &rarr; {<a href="global.html#TRecordPagination">TRecordPagination</a>}</span></h3><div class="description"><p>Prepare records pagination:</p><ul><li>making sure records limit is obeyed</li><li>making sure page is a positive value</li><li>if skip is given, recalculate limit to use skip instead of page number</li><li>Build sort info</li></ul></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Filter object</p></td></tr><tr><td class="name"><code>schema</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's schema</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Options</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line329">line 329</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="global.html#TRecordPagination">TRecordPagination</a></span></dd></dl></div><h3 class="name has-anchor" id="recordCount"><span class="type-signature">(async) </span>recordCount<span class="signature">(name, filter<span class="signature-attributes">opt</span>, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {TRecordCountResult|number}</span></h3><div class="description"><p>Return the number of records found by given filter</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordFilter">TRecordFilter</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Filter object</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordCountOptions">TRecordCountOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_count.js.html">method/record/count.js</a>, <a href="method_record_count.js.html#line13">line 13</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return <code>number</code> of records if <code>options.dataOnly</code> is set. TRecordCountResult otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">TRecordCountResult</span> |<wbr> <span class="param-type">number</span></dd></dl></div><h3 class="name has-anchor" id="recordCreate"><span class="type-signature">(async) </span>recordCreate<span class="signature">(name, body, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {TRecordCreateResult|Object}</span></h3><div class="description"><p>Create a new record</p><p>Example:</p><pre class="prettyprint source lang-javascript"><code>const { recordCreate } = this.app.dobo const { body } = { id: 'ID', name: 'Indonesia', iso3: 'IDN' } const result = await recordCreate('CdbCountry', body) </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Data to be saved</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordCreateOptions">TRecordCreateOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_create.js.html">method/record/create.js</a>, <a href="method_record_create.js.html#line25">line 25</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns newly created record if <code>options.dataOnly</code> is set. TRecordCreateResult otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">TRecordCreateResult</span> |<wbr> <span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="recordFind"><span class="type-signature">(async) </span>recordFind<span class="signature">(name, filter<span class="signature-attributes">opt</span>, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {<a href="global.html#TRecordFindResult">TRecordFindResult</a>|Array.&lt;Object>}</span></h3><div class="description"><p>Find records by model's name and given filter</p><p>Example: find records from model <strong>CdbCountry</strong> where its id is 'ID' or 'MY', sorted by <code>name</code> in ascending order and return only its <code>id</code>, <code>name</code> and <code>iso3</code></p><pre class="prettyprint source lang-javascript"><code>const { recordFind } = this.app.dobo const query = { id: { $in: ['ID', 'MY'] } } const sort = { name: 1 } const fields = ['id', 'name', 'iso3'] const result = await recordFind('CdbCountry', { query, sort }, { fields }) </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Filter object</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordFindOptions">TRecordFindOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_find.js.html">method/record/find.js</a>, <a href="method_record_find.js.html#line45">line 45</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return <code>array</code> of records if <code>options.dataOnly</code> is set. <a href="global.html#TRecordFindResult">TRecordFindResult</a> otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="global.html#TRecordFindResult">TRecordFindResult</a></span> |<wbr> <span class="param-type">Array.&lt;Object></span></dd></dl></div><h3 class="name has-anchor" id="recordFindAll"><span class="type-signature">(async) </span>recordFindAll<span class="signature">(name, filter<span class="signature-attributes">opt</span>, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {<a href="global.html#TRecordFindResult">TRecordFindResult</a>|Array.&lt;Object>}</span></h3><div class="description"><p>Find all records by model's name and given filter.</p><p>The total number of records returned is limited by <code>hardLimit</code> value set in config file.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Filter object</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordFindOptions">TRecordFindOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_find-all.js.html">method/record/find-all.js</a>, <a href="method_record_find-all.js.html#line1">line 1</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li><a href="Dobo.html#recordFind">Dobo#recordFind</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return <code>array</code> of records if <code>options.dataOnly</code> is set. <a href="global.html#TRecordFindResult">TRecordFindResult</a> otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="global.html#TRecordFindResult">TRecordFindResult</a></span> |<wbr> <span class="param-type">Array.&lt;Object></span></dd></dl></div><h3 class="name has-anchor" id="recordFindOne"><span class="type-signature">(async) </span>recordFindOne<span class="signature">(name, filter<span class="signature-attributes">opt</span>, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {<a href="global.html#TRecordGetResult">TRecordGetResult</a>|Object}</span></h3><div class="description"><p>Find the first record by model's name and given filter.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>filter</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><p>Filter object</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordFindOptions">TRecordFindOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_find-one.js.html">method/record/find-one.js</a>, <a href="method_record_find-one.js.html#line5">line 5</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li><a href="Dobo.html#recordFind">Dobo#recordFind</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return record's <code>object</code> if <code>options.dataOnly</code> is set. <a href="global.html#TRecordGetResult">TRecordGetResult</a> otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="global.html#TRecordGetResult">TRecordGetResult</a></span> |<wbr> <span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="recordGet"><span class="type-signature">(async) </span>recordGet<span class="signature">(name, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {<a href="global.html#TRecordGetResult">TRecordGetResult</a>|Object}</span></h3><div class="description"><p>Get record by model's name and record ID</p><p>Example:</p><pre class="prettyprint source lang-javascript"><code>const { recordGet } = this.app.dobo const fields = ['id', 'name', 'iso3'] const result = await recordGet('CdbCountry', 'ID', { fields }) </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code></code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Record's ID</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordGetOptions">TRecordGetOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_get.js.html">method/record/get.js</a>, <a href="method_record_get.js.html#line26">line 26</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return record's <code>object</code> if <code>options.dataOnly</code> is set. <a href="global.html#TRecordGetResult">TRecordGetResult</a> otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="global.html#TRecordGetResult">TRecordGetResult</a></span> |<wbr> <span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="recordRemove"><span class="type-signature">(async) </span>recordRemove<span class="signature">(name, id, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {TRecordRemoveResult|Object}</span></h3><div class="description"><p>Remove existing record by it's ID. All attachments bound to this record will also be removed forever.</p><p>Example:</p><pre class="prettyprint source lang-javascript"><code>const { recordRemove } = this.app.dobo const result = await recordRemove('CdbCountry', 'ID') </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>id</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Record's ID</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordRemoveOptions">TRecordRemoveOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_remove.js.html">method/record/remove.js</a>, <a href="method_record_remove.js.html#line17">line 17</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Return the removed record if <code>options.dataOnly</code> is set. TRecordRemoveResult otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">TRecordRemoveResult</span> |<wbr> <span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="recordUpdate"><span class="type-signature">(async) </span>recordUpdate<span class="signature">(name, id, body, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {TRecordUpdateResult|Object}</span></h3><div class="description"><p>Update a record by it's ID and body payload</p><p>Example:</p><pre class="prettyprint source lang-javascript"><code>const { recordUpdate } = this.app.dobo const { body } = { name: 'Republic of Indonesia', phoneCode: '+62' } const result = await recordUpdate('CdbCountry', 'ID', body) </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>id</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">number</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Record's ID</p></td></tr><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Body payload</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="global.html#TRecordUpdateOptions">TRecordUpdateOptions</a></span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_update.js.html">method/record/update.js</a>, <a href="method_record_update.js.html#line25">line 25</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns updated record if <code>options.dataOnly</code> is set. TRecordUpdateResult otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">TRecordUpdateResult</span> |<wbr> <span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="recordUpsert"><span class="type-signature">(async) </span>recordUpsert<span class="signature">(name, body, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {TRecordUpdateResult|TRecordCreateResult|Object}</span></h3><div class="description"><p>Update a record by payload's ID. If no record is found by given ID, a new one will be created instead.</p><p>Missing ID in payload always results a new record creation.</p><pre class="prettyprint source"><code></code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Model's name</p></td></tr><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Body payload</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">TRecordUpsertOptions</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_record_upsert.js.html">method/record/upsert.js</a>, <a href="method_record_upsert.js.html#line1">line 1</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns updated/newly created record if <code>options.dataOnly</code> is set. TRecordUpdateResult or TRecordCreateResult otherwise</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">TRecordUpdateResult</span> |<wbr> <span class="param-type">TRecordCreateResult</span> |<wbr> <span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="start"><span class="type-signature">(async) </span>start<span class="signature">(conns<span class="signature-attributes">opt</span>, noRebuild<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Start plugin</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>conns</code></td><td class="type"><span class="param-type">string</span> |<wbr> <span class="param-type">Array</span></td><td class="attributes">&lt;optional><br></td><td class="default">all</td><td class="description last"><p>Which connections should be run on start</p></td></tr><tr><td class="name"><code>noRebuild</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default">false</td><td class="description last"><p>Set <code>true</code> to ALWAYS rebuild model on start. Yes, only set it to <code>true</code> if you REALLY know what you're doing!!!</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="index.js.html">index.js</a>, <a href="index.js.html#line250">line 250</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".sanitizeBody"><span class="type-signature">(async, static) </span>sanitizeBody<span class="signature">(options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Object}</span></h3><div class="description"><p>Sanitize payload body against schema</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr><tr><td class="name"><code>schema</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="default">{}</td><td class="description last"></td></tr><tr><td class="name"><code>partial</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default">false</td><td class="description last"></td></tr><tr><td class="name"><code>strict</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default">false</td><td class="description last"></td></tr><tr><td class="name"><code>extFields</code></td><td class="type"><span class="param-type">Array</span></td><td class="attributes">&lt;optional><br></td><td class="default">[]</td><td class="description last"></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="method_sanitize_body.js.html">method/sanitize/body.js</a>, <a href="method_sanitize_body.js.html#line16">line 16</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id=".sanitizeDate"><span class="type-signature">(static) </span>sanitizeDate<span class="signature">(value, options<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {string|Date}</span></h3><div class="description"><p>Sanitize value as a date/time value. Parse/format string using <a href="https://day.js.org/docs/en/display/format">dayjs format</a></p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>N