Skip to content

Instantly share code, notes, and snippets.

@joshongit
Last active July 24, 2016 12:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save joshongit/a0a232fab9a83ce5ef7b to your computer and use it in GitHub Desktop.
Save joshongit/a0a232fab9a83ce5ef7b to your computer and use it in GitHub Desktop.
Sample Pouch db example with collate
<html>
<body>
<input type="text" id="keyVal"><button onclick="getResult()">Filter</button><button onclick="getAllDocs()">Show available doc</button><button onclick="generateDoc()">Generate Doc</button><button onclick="destroyDB()">Destroy DB & Reload</button>
<div id="result"></div>
<script src="//cdn.jsdelivr.net/pouchdb/latest/pouchdb.min.js"></script>
<script src="https://rawgit.com/pouchdb/collate/master/dist/pouchdb-collate.js"></script>
<script src="init.js"></script>
</body>
</html>
function destroyDB(){
if(newDB){
newDB.destroy();
location.reload();
}
}
function getAllDocs(){
newDB.allDocs({include_docs:true}).then(function(result){
printResult(result['rows'])
console.log(result)
})
}
function getResult(){
var keyVal = document.getElementById('keyVal').value || 'a';
/*newDB.allDocs({include_docs:true,key:pouchCollate.toIndexableString(keyVal)}).then(function(filteredResult){
printResult(filteredResult['rows']);
console.log(filteredResult)
})*/
newDB.allDocs({include_docs:true,startkey:keyVal,endkey:keyVal+"\uffff"}).then(function(filteredResult){
printResult(filteredResult['rows']);
console.log(filteredResult)
})
}
function printResult(data){
var len = data.length,
strObj = '';
for(var i=0;i<len;i++){
var doc = data[i]['doc']
strObj+="{<br/>";
for( j in doc){
strObj += j+" : "+doc[j]+"<br/>"
}
strObj+="key :"+ data[i].key+"<br/>"
strObj+="id :"+ data[i].id+"<br/>"
strObj+="}<br/>";
}
document.getElementById('result').innerHTML = strObj
}
function stringGen(len)
{
var text = " ";
var charset = "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < len; i++ )
text += charset.charAt(Math.floor(Math.random() * charset.length));
return text;
}
var jsObj = [];
var newDB;
function generateDoc(){
for(var i=0;i<10;i++){
var newObj = {};
newObj.title = stringGen(10);
newObj.subject= stringGen(10)+" "+stringGen(10);
newObj.content=stringGen(100)+" "+stringGen(100)+" "+stringGen(100);
newObj._id = pouchCollate.toIndexableString([newObj.title,newObj.subject]);
jsObj.push(newObj);
}
newDB.bulkDocs(jsObj).then(function(){
newDB.allDocs({include_docs:true}).then(function(result){
printResult(result['rows'])
console.log(result)
})
});
}
window.onload = function(){
newDB = new PouchDB('test');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment