Комментарии 21
Не знаю. Мне все-таки ближе реализации функционала хранилища на подобие Ext.Data или TaffyDB. SQL на стороне клиента, на мой взгляд не нужен.
+1
Было бы здорово, иметь возможность рендерить скомпилированные LINQ (.net) запросы в подобный JS код. Один раз написал запрос, и пользуйся им потом и на клиенте, и в кеш сервере, и в БД.
Технически возможность есть…
Технически возможность есть…
0
По-моему синтаксис получается нереально раздутым. Понимаю, конечно, что иначе наверное никак, но каждый раз писать
вместо
мне бы очень быстро надоело.
OrderBy( function(item) { return item.name } )
вместо
order by name
мне бы очень быстро надоело.
+8
Сперва
var ItemName = function(item) { return item.name; }
Затем
OrderBy(ItemName)
var ItemName = function(item) { return item.name; }
Затем
OrderBy(ItemName)
-3
можно реализовать JSON-QL
структура
выборка
на обычном SQL это длинный запрос с JOIN
пример реализации
структура
Book = {id:'int', name:'string', price:'float', publish:'datetime'}
Shop = {id:'int', books:'list<Book>'}
выборка
var criteria = {books:{lt:{price:100},gt:{publish:'2010-04-01 10:20:00'}}};
select('Shop', criteria)
на обычном SQL это длинный запрос с JOIN
пример реализации
0
Я бы относился к этому не как к «SQL» а как к удобной библиотеке функционального стиля для работы с коллекциями. И это очень удобно!
+7
То ли пример неудачный, то ли задумка какая-то странная. Синтаксис вывернут наизнанку: сначала Where, затем Select. И логика примера тоже подозрительная — какой смысл искать FirstName, если мы его уже знаем. На нормальном SQL, я так понимаю, это будет:
Во втором случае вообще замес страшный. Затрудняюсь в нормальный SQL перевести.
Имхо, стоит сделать обертку — парсер из нормального SQL в этот SQL-like, и только тогда начинать пользоваться. Тогда в приложениях можно будет писать запросы на переносимом SQL без всяких вывертов.
select FirstName
from sampleData
where FirstName = 'Chris'
order by 1
Во втором случае вообще замес страшный. Затрудняюсь в нормальный SQL перевести.
Имхо, стоит сделать обертку — парсер из нормального SQL в этот SQL-like, и только тогда начинать пользоваться. Тогда в приложениях можно будет писать запросы на переносимом SQL без всяких вывертов.
-2
Упоминание SQL совершенно неуместно в этой статье, это обычные функции высшего порядка на Javascript, только и всего.
+1
На самом деле, порядок операторов LINQ не очень читаем, зато полностью соответствует порядку их выполнения базой данных. Инструкция select выполняется в самую последнюю очередь, когда все остальные параметры уже заданы.
+1
Если присмотреться к исходникам проекта, то можно обнаружить, что операторы являются энергичными, а не ленивыми как в LINQ. Where сразу бежит по массиву, рожая новый, то есть совсем другой behavior по сравнению LINQ…
Кстати, где-то видел анонимные функции в JS из одного expression в такой вот записи (ну прямо лямбды), вроде даже тестировал и вроде даже где-то работало:
Если такое существует, то может кто подкинет ссылку, с каких версий, в каких бразуерах и т.п.
Кстати, где-то видел анонимные функции в JS из одного expression в такой вот записи (ну прямо лямбды), вроде даже тестировал и вроде даже где-то работало:
var sample = JSLINQ(sampleData)
.Where(function (x) x.FirstName == "Chris")
.Select(function (x) x.FirstName)
.OrderBy(function (x) x);
Если такое существует, то может кто подкинет ссылку, с каких версий, в каких бразуерах и т.п.
+1
Существует в Firefox 3+
Насчет других браузеров — не натыкался, вроде нет.
Насчет других браузеров — не натыкался, вроде нет.
0
Парсер Хабрахабра заменил «c» в слове «script», так что гиперссылка Ваша неработоспособна.
-2
Ох, уж этот хабрапарсер… :) Спасибо за замечание.
Ссылка: New in Javascript 1.8: Expression closures
Ссылка: New in Javascript 1.8: Expression closures
+1
Благодарю. Жаль, что фича не распространена…
0
вот интересное решение osteele.com/sources/javascript/functional/
0
вроде в jLinq подобное имеется, можно лямбды в стиле C# писать:
.select('x => x * 2')
Оно тупо парсит текст на аргументы и тело, а потом конструирует функцию конструктором Function(args, body). Из минусов — кавычки литералов, потеря подсветки кода и невозможность замкнуться на что-либо… 0
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Выполнение SQL-подобных запросов над данными — как в браузере, так и на сервере