SQLite WASM 如何从 url 加载现有数据库

问题描述 投票:0回答:1

我有一个为 SQLite 数据库提供服务的 API 端点。我想在网络应用程序中加载此数据库,然后查询它。不需要坚持,因为我不写它。

创建一个新的数据库效果很好:

new sqlite3.oo1.DB();

但是,构造函数和之前的任何其他函数都不接受现有数据库作为参数。构造函数可以将文件名作为参数,但这似乎不起作用。它甚至没有触发 HTTP 请求就失败了。

sql.js 有一个这样的构造函数:

new SQL.Database(new Uint8Array(buffer));

这可行,但我不能使用 sql.js,因为它没有 FTS5。

如何加载现有数据库?这不是很容易吗?

javascript sqlite webassembly
1个回答
0
投票

我让它工作了:我自己编译了 sql.js,添加了 FTS5 支持。

这很容易。只需将 FTS5 选项添加到 Makefile:

--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,7 @@ SQLITE_COMPILATION_FLAGS = \
        -DSQLITE_DISABLE_LFS \
        -DSQLITE_ENABLE_FTS3 \
        -DSQLITE_ENABLE_FTS3_PARENTHESIS \
+       -DSQLITE_ENABLE_FTS5 \
        -DSQLITE_THREADSAFE=0 \
        -DSQLITE_ENABLE_NORMALIZE

然后

make
。在我的系统上,我遇到了 sha3sum 不存在和 emscripten 尝试写入只读文件系统的一些问题,但这两个问题都可以轻松解决。生成的wasm和js文件可以在之后的
dist/
目录中找到。

存储库上有一个默认启用它的提案,但它似乎已停滞:sql-js/sql.js#199

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