Skip to content
Lexas edited this page Feb 16, 2013 · 1 revision

Table of Contents

Introducción

Problemas que hay que solucionar o mejoras del código

Filtrado complejo

Averiguar si hay forma de filtrar las entradas por el valor del atributo "timestamp" desde la query de arango (sin pasarle los resultados a node.js para que haga un arreglo con la entrada que buscamos). La estructura de los datos es:

 {
     project : "Demo1",
     fragments : [...],
     entries : {
         text : [
             {
                 title : "entry1",
                 content : "...",
                 tags : [...],
                 timestamp : "0:00:03.00",
                 related : ["entry2"]
             },
             {
                 ...
             }
         ]
     }
 }

Nota: los corchetes indican que es un arreglo, las llaves que es un objeto JSON, cada entrada es un JSON dentro de el arreglo de cada categoría.

Solución actual:

Actualmente el filtrado se hace por medio de node.js con el siguiente algoritmo. query = db.query.for('r').in('test')

    .filter('r.project == @project')
    .collect('time = r.fragments[@index]')
    .return('{"timestamp": time}');
 query.exec({project: "Demo1", index: req.body.selection - 1}).then(
     function(data){ timestamp = data[0].timestamp;},
     function(err){ console.log("err",err) }
 ).then(function(data){ 
     query = db.query.for('r').in('test')
     .filter('r.project == @project')
     .collect('info = r.entries.text')
     .return('{"info": info}');
     query.exec({project: "Demo1"}).then(
         function(data){  
             var entries = [];
             for(var i in data[0].info){
                 if(data[0].info[i].fragment == timestamp){
                     entries.push(data[0].info[i]);
                 }
             }
             console.log("res", timestamp);
             res.send(entries);
         },
         function(err){ console.log("err",err) }
     );
 });

Posible solución 1

Usar cursores con AQL: http://www.arangodb.org/2013/01/31/querying-documents-and-graphs-in-one-database-with-aql-easily