如何使用node js同步读取sqlite3数据库?
Posted
技术标签:
【中文标题】如何使用node js同步读取sqlite3数据库?【英文标题】:How to read a sqlite3 database, using node js, synchronously? 【发布时间】:2013-03-12 15:19:29 【问题描述】:exports.allProbes = function()
var rows = db.all("SELECT * FROM probes;");
return rows;
;
main:
var json_values = allProbes();
有可能做这样的事情吗? 我的意思是,不使用回调函数:只是从数据库中读取数据(同步模式)。并返回一个 json 格式的输出?
谢谢。
【问题讨论】:
你用的是什么模块?这完全取决于它是否具有同步支持。 我已经使用以下命令安装了 sqlite3:“npm install sqlite3” 我需要和你一样的 OP。我需要保证我的查询按顺序执行。将它包装在 Promise 中是一个 PITAS 【参考方案1】:使用 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。
【讨论】:
或者只是..db.all("SELECT * FROM probes;", callback)
,
我们不能使用promise吗?【参考方案2】:
你必须使用 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
【讨论】:
这不能回答问题。 文件是同步读取的,但是数据库查询还是需要异步回调。【参考方案3】:有一些 npm 包,例如 better-sqlite3 和 sqlite-sync,允许同步 SQLite 查询。这是一个例子:
var sqlite = require("better-sqlite3");
var db = new sqlite("example.db");
var rows = db.prepare("SELECT * FROM probes").all();
console.log(rows);
【讨论】:
以上是关于如何使用node js同步读取sqlite3数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 node.js 中使用 sqlite3 执行批量插入?
Node.js 说它不能加载 sqlite3 模块,但无论如何
使用 node.js 检查数据是不是包含在 SQLite3 数据库中