2013-03-22 2 views
6
exports.allProbes = function() { 
    var rows = db.all("SELECT * FROM probes;"); 
    return rows; 
}; 

main: 
var json_values = allProbes(); 

Ist es möglich, so etwas zu tun? ich meine, ohne eine Callback-Funktion zu verwenden: nur, lesen Sie Daten (Sync-Modus) von der db. und eine json formatierte Ausgabe zurückgeben?Wie liest man eine SQLite3-Datenbank synchron mit dem Knoten js?

Danke.

+0

Welches Modul verwenden Sie? Es hängt alles davon ab, ob es synchrone Unterstützung hat. – travis

+0

Ich habe sqlite3 mit folgendem Befehl installiert: "npm install sqlite3" – Kreshnik

Antwort

7

Sie können dies nicht mit sqlite3 tun. Mit sqlite3-Modul ist der einzige verfügbare Betriebsmodus asynchrone Ausführung, und Sie müssen einen Rückruf verwenden. Z.B.

exports.allProbes = function(callback) { 
    db.all("SELECT * FROM probes;", function(err, all) { 
     callback(err, all); 
    }); 
}; 

Dann im Code:

var json_values; 

allProbes(function(err, all) { 
    json_values = all; 
}); 

prüfen sqlite3 API Docs.

+0

danke für die Antwort. – Kreshnik

+0

oder nur .. 'db.all (" SELECT * FROM Sonden; "Callback)', –

0

Sie haben sql.js mit NPM installieren --save sql.js

Ruhe die folgenden Schritte aus installieren:

var fs = require('fs');  
var sql = require('sql.js');  
var bfr = fs.readFileSync('/tmp/db.sqlite'); 

var db = new sql.Database(bfr); 
db.each('SELECT * FROM test', function (row) { 

    console.log(row); 

}); 

Mehr Details erfahren Sie auf der unter diesem Link zu erreichen: https://discuss.atom.io/t/how-to-access-a-local-db-on-windows-through-electron/22400/13

+0

Dies beantwortet die Frage nicht. Das _file_ wird synchron gelesen, aber die Datenbankabfrage erfordert weiterhin einen asynchronen Rückruf. – vqdave