SQLite на nodejs для Windows - PullRequest
       3

SQLite на nodejs для Windows

3 голосов
/ 11 сентября 2011

У меня очень простой вопрос.Как использовать любую библиотеку SQLite с nodejs под Windows?Я заглянул в библиотеку sqlite3, и она требует компиляции, которая зависит от Linux.В общем, это не первый раз, когда я сталкиваюсь с вопросом такого типа.Та же проблема, что у меня была с TameJS.Если кто-нибудь знает какое-либо решение для этого, я был бы признателен.Google молчит.

PS: Cygwin не вариант.Целевое приложение должно быть простой в использовании портативной базой данных, управляемой nodejs и имеющей интерфейс веб-браузера.

1 Ответ

5 голосов
/ 08 ноября 2011

Читайте внизу для Обновления 2 (2013-12-06) - теперь есть чистый модуль JS , который выглядит многообещающе для работы Windows ...

У меня возникла похожая проблема, и мне не хватает волшебства с перекомпоновкой Windowsite Windows (или компиляцией существующих пакетов nodejs), лучшее, что я мог придумать, - это использовать дочерний процесс и выполнить оболочку для консольный клиент sqlite, а затем захватить результаты ... Не самый красивый, и я понятия не имею, может ли это масштабироваться, но в ограниченном сценарии интрасети это может быть Good Enough ™.

Обновление:

Вот некоторый код, который я собрал вместе - дать вам представление на тот случай, если вы не знакомы с модулем child_process. Это работает на nodejs 0.6.0.

Сначала я собираю команду, необходимую для извлечения чего-либо из sqlite:

var cmd = '"' + sqlitePath + '" "' + dbPath + '" "select * from sqlite_master"';

Обратите внимание: если вы включите необязательные флаги -noheader и -list, вы можете получить немного лучший вывод для разбора. Вы также можете управлять разделителем полей, используя -separator 'x', где x - ваш разделитель.

Тогда я фактически порождаю дочерний процесс:

var child = exec(cmd, function(error, stdout, stderr) {
        if (error) {
            console.log('error while trying to do stuff...');
            // error message in error and stderr
        } else {
            console.log('success');
            // successful stuff is in stdout
        }
    });

В сочетании с некоторым разбором строк и игрой с опциями клиента консоли sqlite, вы можете сделать это достаточно. Однако я повторяю, однако, это не проверено на производстве - я просто копирую некоторые вещи в интранете, и даже при этом я уверен, что это не лучший подход!

Обновление 2 (2013-12-06):

Для тех, кто читает этот вопрос сейчас, вам может быть интересно проверить sql.js на github; Это чисто JS-реализация sqlite, которая выглядит многообещающе для взаимодействия в Windows (или на любой другой платформе). Обратите внимание, что для установки через npm имя пакета node-sqlite-purejs.

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