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

main:
var json_values = allProbes();

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

谢谢。

4

3 回答 3

34

有一些 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);
于 2017-12-24T18:25:27.263 回答
18

您将无法使用 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 文档

于 2013-07-10T22:54:00.723 回答
-1

您必须使用 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

于 2017-07-25T11:28:29.447 回答