JavaScript DB API дизайн - PullRequest
0 голосов
/ 21 июня 2011

Я создаю базу данных, к которой может обращаться JavaScript, и я хотел бы иметь возможность представлять запросы в JavaScript, которые затем будут преобразованы во что-то другое.

В настоящее время у меня есть APIэто работает следующим образом:

var db; /* don't worry about the definition */
var is; /* db functions, don't worry about definition */

/* variables from HTTP session,  */
var $session; /* $session == {"user": 12345} */

var results = [];

db.put("posts").
        where("date", is.between("January 10 2010", "December 10 2010")).
        where("author", is("John Doe")).
        where("user", is($session.user).
        into(results);  

Приведенный выше код будет получать все сообщения из базы данных с датами с 10 января 2010 года по 10 декабря 2010 года и т. д. и помещать их как элементы массива в результаты, к которым затем можно получить доступкак обычные объекты, например:

var i;
for(i = 0; i < results.length; i++) {
    alert("Result #" + i + ": " + results[i].title);
}

База данных не является SQL, но содержит «типизированные» объекты JSON (если это важно, я могу уточнить далее).

Является ли этот APIНеплохо?Или я должен сделать что-то еще?Я хотел бы избегать использования строк как единственного метода, основанного на MySQL.


Моя другая идея состояла в том, чтобы каким-то образом имитировать DOM (что-то вроде JQuery), но я не уверен, что лучший способ сделатьэто было бы.

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Взгляните на SQLike, это БД, написанная на JavaScript, которая использует синтаксис SQL "like". может быть именно то, что вы ищете.

Сообщение в блоге: http://www.thomasfrank.se/sqlike.html <- вы можете получить не минимизированный источник здесь </p>

Демо: http://www.thomasfrank.se/SQLike/

0 голосов
/ 21 июня 2011

Кажется, это хорошо - это очень похоже на другие синтаксические структуры построения запросов (пример того, как библиотека PHP делает это аналогично).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...