Подтвердить что ты не робот

Библиотеки Javascript, которые позволяют SQL-запросы на данные JSON?

Скажем, данные JSON поступают из одной таблицы MySQL:

someJSON =    [ { name: 'bill' , sex:'M', income:50000 },
                { name: 'sara' , sex:'F', income:100000 },
                 ...
               ];

И скажем, что псевдокод:

"Получить все объекты персонажа всех sex:F из income > 60000`.

Существуют ли библиотеки javascript, которые позволяли бы кодировать такие запросы в данных JSON с использованием синтаксиса SQL или SQL.

Если вам интересно, какой-то контекст:

Я делаю front-end веб-сервис анализа данных для своей организации, не зная, каким будет будущий бэкэнд. В будущем они будут переносить свои данные из таблиц MS Access в некоторую базу данных типа MySQL. До тех пор я использую статические файлы JSON для начала разработки и думал, что в будущем им может быть полезно, чтобы мои javascript-запросы отображались в виде запросов MySQL. (Текущая база данных MS Access недоступна из Интернета.)

4b9b3361

Ответ 1

Отъезд jslinq:

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; });

Ответ 2

Я использую Taffydb. TaffyDB - это библиотека opensouce, которая предоставляет функции базы данных в ваших приложениях JavaScript. http://taffydb.com/

Ответ 3

Вы можете попробовать alasql.js. Это чистый клиентский SQL-сервер на базе JavaScript, где вы можете делать запросы по объектам JSON.

   // Fill table with data
   var data = [ { name: 'bill' , sex:'M', income:50000 },
                { name: 'sara' , sex:'F', income:100000 }];

   // Do the query
   console.log(alasql("SELECT * FROM ? WHERE sex='F' AND income > 60000",[data]));

Попробуйте это в Fiddle

Ответ 5

Вам может быть интересно проверить MongoDB, хранилище данных в стиле JSON с полной информацией. Вот его синтаксис запроса:

db.users.find({'last_name': 'Smith'})

Для вашего примера вопрос:

db.users.find({'sex': 'F', 'income' : {$gt : 60000}})

Ответ 6

Существует также JsonSql, который, похоже, похож на то, что вы ищете. Проблема только в том, что он не обновлялся в 12/30/2007. Тем не менее, код для захвата и воспроизведения.

Ответ 7

В зависимости от того, какие браузеры/версии вы должны поддерживать, я бы стремился использовать клиентский SQL-клиент HTML5, подталкивая мои данные JSON в одну или несколько таблиц и используя мощность истинных SQL-запросов.

Здесь спецификация проекта: http://www.w3.org/TR/webdatabase/

Ответ 8

Существует также запрос стиля XPath под названием JSONPath, который мне нравится http://goessner.net/articles/JsonPath/

И есть это http://code.google.com/p/jfunk/ Какие пользовательские селектора стиля jQuery для фильтрации данных

Ответ 9

Я знаю, что вопрос старый, но я просто пришел сюда через поиск Google. Я просто заговорю о objeq. Выглядит довольно многообещающим и очень тем, что вы ищете.

Ответ 10

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
	<script type="text/javascript" src="linq.js"></script>
	<script type="text/javascript">
var jsonArray = [
    { "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" },
    { "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" },
    { "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" },
    { "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" }
]
// ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"]
var queryResult = Enumerable.From(jsonArray)
    .Where(function (x) { return x.user.id < 200 })
    .OrderBy(function (x) { return x.user.screen_name })
    .Select(function (x) { return x.user.screen_name + ':' + x.text })
    .ToArray();
// shortcut! string lambda selector
var queryResult2 = Enumerable.From(jsonArray)
    .Where("$.user.id < 200")
    .OrderBy("$.user.screen_name")
    .Select("$.user.screen_name + ':' + $.text")
    .ToArray();

console.log(queryResult);
console.log(queryResult2);
	</script>
</head>
<body>


</body>
</html>