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

main: 
var json_values = allProbes(); 

Czy można zrobić coś takiego? Mam na myśli, bez korzystania z funkcji zwrotnej: po prostu, odczyt danych (tryb synchronizacji) z db. i zwraca format wyjściowy json?Jak odczytać bazę danych sqlite3, używając węzła js, synchronicznie?

Dzięki.

+0

Jakiego modułu używasz? Wszystko zależy od tego, czy ma wsparcie synchroniczne. – travis

+0

Zainstalowałem program sqlite3 za pomocą następującego polecenia: "npm install sqlite3" – Kreshnik

Odpowiedz

7

Nie będziesz w stanie zrobić tego z sqlite3. W module sqlite3 jedynym dostępnym trybem działania jest wykonywanie asynchroniczne, a będziesz musiał użyć wywołania zwrotnego. Na przykład.

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

Następnie w kodzie:

var json_values; 

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

Sprawdź sqlite3 API Docs.

+0

dzięki za odpowiedź. – Kreshnik

+0

lub po prostu .. 'db.all (" SELECT * FROM sond; ", callback)', –

0

Musisz zainstalować sql.js z KMP zainstalować --save sql.js

Reszta wykonaj poniższe czynności:

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

}); 

Więcej szczegółów można uzyskać na poniższy link: https://discuss.atom.io/t/how-to-access-a-local-db-on-windows-through-electron/22400/13

+0

To nie odpowiada na pytanie. Plik _file_ jest odczytywany synchronicznie, ale zapytanie bazy danych nadal wymaga asynchronicznego wywołania zwrotnego. – vqdave

Powiązane problemy