2013-03-22 143 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