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

main: 
var json_values = allProbes(); 

是否有可能做這樣的事情? 我的意思是,沒有使用回調函數:只是,從數據庫讀取數據(同步模式)。並返回一個json格式的輸出?如何使用節點js同步讀取sqlite3數據庫?

謝謝。

+0

你使用什麼模塊?這完全取決於它是否具有同步支持。 – travis 2013-03-22 17:24:17

+0

我已經用以下命令安裝了sqlite3:「npm install sqlite3」 – Kreshnik 2013-03-22 17:29:14

回答

7

你不能用sqlite3來做到這一點。對於sqlite3模塊,唯一可用的操作模式是異步執行,您將不得不使用回調。例如。

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

然後在你的代碼:

var json_values; 

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

檢查sqlite3 API Docs

+0

感謝您的回覆。 – Kreshnik 2013-07-10 22:57:50

+0

或只是..'db.all(「SELECT * FROM probes;」,callback)', – 2018-01-27 06:40:06

0

您必須安裝與NPM sql.js安裝--save sql.js

休息遵循以下步驟:

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

}); 

更多細節你可以在這個鏈接如下:https://discuss.atom.io/t/how-to-access-a-local-db-on-windows-through-electron/22400/13

+0

這不回答這個問題。 _file_被同步讀取,但數據庫查詢仍然需要異步回調。 – vqdave 2017-12-24 18:17:30