2011-03-16 10 views
6

¿Hay alguna manera de ejecutar una consulta SQL contra objetos JavaScript para buscar datos dentro de ellos? Específicamente estoy buscando una forma de consultar unos pocos objetos (cada uno representa una tabla de datos) y realizar una combinación en ellos.¿Utiliza SQL para consultar objetos JavaScript?

Pensé que esto era una posibilidad remota, pero vale la pena preguntar, no obstante.

+0

¿Quieres decir alguna de las interfaces en el navegador que acepte SQL? – n8wrl

+0

Podría proporcionar una descripción más detallada de su problema junto con algunos ejemplos de objetos de JavaScript. –

+0

@ n8wrl No, no es una interfaz, es más para la manipulación detrás de escena de los datos, por lo que puedo tomar objetos javascript (por ejemplo, desde una llamada ajax) y realizar consultas avanzadas sobre ellos antes de mostrar al usuario. @ a'r Todavía no hay objetos de muestra js, quería saber si había una forma de consultar los objetos js antes de construir una solución que dependiera de ella. – bejonbee

Respuesta

2

Nunca lo había usado antes, pero una búsqueda rápida en Google produce LINQ to Javascript. Si bien no es sintaxis SQL, le permite hacer SQL cosas similares en objetos Javascript, o eso parece. También es posible que desee comprobar hacia fuera este question about LINQ and Javascript

3

Trate JSLinq

Ver este ejemplo desde el sitio:

var myList = [ 
     {FirstName:"Chris",LastName:"Pearson"}, 
     {FirstName:"Kate",LastName:"Johnson"}, 
     {FirstName:"Josh",LastName:"Sutherland"}, 
     {FirstName:"John",LastName:"Ronald"}, 
     {FirstName:"Steve",LastName:"Pinkerton"} 
     ]; 

var exampleArray = JSLINQ(myList) 
        .Where(function(item){ return item.FirstName == "Chris"; }) 
        .OrderBy(function(item) { return item.FirstName; }) 
        .Select(function(item){ return item.FirstName; }); 
+0

Nunca he oído hablar de esto, pero me gusta su apariencia. Parece que no hace uniones. – bejonbee

+0

Bueno, alguien afirma en su sitio que ha desarrollado algo como esto, no ide si es cierto, pero puedes intentar contactarlo. Ver el siguiente enlace: http://jslinq.codeplex.com/discussions/41842?ProjectName=jslinq – CloudyMarble

2

Puede usar async-linq, que admite operaciones LINQ tanto sincronizadas como asíncronas en JavaScript y la función a la par con la versión C#. Puede obtenerlo llamando al npm install async-linq.

sincronización operación

linq([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) 
    .where(function (v) { return v % 2 === 1; }) 
    .select(function (v) { return v * 100; }) 
    .run(); 

funcionamiento asíncrono

linq(['abc.txt', 'def.txt', 'xyz.txt']) 
    .async 
    .select(function (filename, index, callback) { 
     fs.stat(filename, function (err, stat) { 
      callback(err, err ? null : { 
       filename: filename, 
       size: stat.size 
      }); 
     }); 
    }) 
    .run(function (err, result) { 
     console.log(result); 
    }); 
Cuestiones relacionadas