如何同步使用节点js读取sqlite3数据库?

时间:2013-03-22 16:57:07

标签: json node.js sqlite

exports.allProbes = function() {
    var rows = db.all("SELECT * FROM probes;");
    return rows;
};

main:
var json_values = allProbes();

有可能做那样的事吗? 我的意思是,不使用回调函数:只是,从数据库中读取数据(同步模式)。并返回一个json格式的输出?

感谢。

3 个答案:

答案 0 :(得分:12)

有一些npm包,例如better-sqlite3sqlite-sync,允许同步SQLite查询。这是一个例子:

var sqlite = require("better-sqlite3");
var db = new sqlite("example.db");

var rows = db.prepare("SELECT * FROM probes").all();
console.log(rows);

答案 1 :(得分:10)

使用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

答案 2 :(得分:0)

您必须使用npm install --save sql.js

安装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