SQLite på nodejs til Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et dårligt simpelt spørgsmål. Sådan bruger du et SQLite-bibliotek med nodejs under Windows? Jeg har kigget ind i sqlite3 lib og det kræver kompilering, som er linux-specifik. Generelt er det ikke første gang jeg står over for et spørgsmål af denne type. Samme problem jeg havde med TameJS. Hvis nogen ved nogen løsning for dette, ville jeg være taknemmelig. Google er tavs.


PS: Cygwin er ikke en mulighed. Målprogrammet skal være en nem bærbar database, der drives af nodejs og har en web-browser-grænseflade.

Bedste reference


Læs nederst for Update 2 (2013-12-06) - der er nu et rent JS-modul, der ser lovende ud for Windows-arbejde ... [9]


Jeg har haft et lignende problem og genert nogle smukke magi med at forbinde windows SQLite (eller kompilere de eksisterende nodejs-pakker) det bedste jeg kunne komme med er at bruge en børneproces og skal ud til konsol sqlite-klienten og derefter fange resultaterne ... Ikke den smukkeste, og jeg har ingen anelse om, at dette kan skala, men i et begrænset intranet scenario kan det være Good Enough ™.


Opdatering:


Her er en kode, som jeg cobbled sammen - giver dig en ide, hvis du ikke er bekendt med child\_process-modulet. Dette virker på nodejs 0.6.0.


Først bygger jeg op den kommando, der kræves for at trække noget ud af sqlite:


var cmd = '"' + sqlitePath + '" "' + dbPath + '" "select * from sqlite\_master"';


Bemærk, hvis du inkludere valgfrie flag -noheader og -list, kan du få lidt bedre output til parsing. Du kan også styre feltet afgrænser ved at bruge -separator 'x' hvor x er din afgrænsning.


Så jeg egentlig spawn barnet processen:


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


I kombination med nogle stringsparsing og afspilning med sqlite-konsolklientens muligheder kan du muligvis nok få det til at gøre nok. Jeg siger dog igen, Dette er ikke produkttestet - Jeg m bare mocking nogle intranet stuff, og selv så jeg er sikker på det er ikke den bedste tilgang!


Opdater 2 (2013-12-06):


For folk, der læser dette spørgsmål nu, er du måske interesseret i at tjekke sql.js på github; det er en ren JS implementering af sqlite, som ser lovende ud til at interagere på windows (eller uanset platform). Vær opmærksom på at installere via npm er pakkenavnet node-sqlite-purejs. [10]