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

问题描述 投票:9回答:3
exports.allProbes = function() {
    var rows = db.all("SELECT * FROM probes;");
    return rows;
};

main:
var json_values = allProbes();

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

谢谢。

json node.js sqlite
3个回答
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


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

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

© www.soinside.com 2019 - 2024. All rights reserved.