Skip to content

Instantly share code, notes, and snippets.

@AlexMocioi
Created September 12, 2014 15:01
Show Gist options
  • Save AlexMocioi/42cdd45d99ed115b4901 to your computer and use it in GitHub Desktop.
Save AlexMocioi/42cdd45d99ed115b4901 to your computer and use it in GitHub Desktop.
Simulează o clauză WHERE complexă din SQL, funcției _list i se trimite ca parametru pe linia de comandă sursa în JavaScript pentru condiția de selecție. Se folosește mai jos cuplarea funcției _list pe view-ul implicit _all_docs Avantaje: filtrarea înregistrărilor se face remote, pe server, volumul de date trimis e minimal funcția de selecție poa…
function(head,req) {
var testFunc = function(doc) { return true; };
if ( typeof req.query['function'] !== 'undefined' ) {
// includ aici funcția de test trimisă
eval("testFunc = function(doc) { return "+req.query['function']+"; }");
}
start({ "headers": {"Content-type":"application/json;charset=utf-8", "Cache-Control": "max-age=10, must-revalidate"}});
send('{"offset":0,');
send('"rows":[\n');
var r2=false;
while (row=getRow()) {
// exclud aici documente de tip design și cele specifice aplicației UNICO, prefixate cu ~
if ( row.doc['_id'].substr(0,8)=='_design/' || row.doc['_id'].substr(0,1)=='~' ) continue;
if ( !testFunc(row.doc) ) continue;
if (r2) {
send(',');
} else {
r2=true;
}
send('{"id":"'+row.id+'", "doc":'+JSON.stringify(row.doc)+'}\n');
}
send('\n]}');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment