@expo/websql

中文文档
1.0.1发布于 2018/05/19Apache-2.0CommonJS近 30 天下载 28.7万

网络SQL 使用 sqlite 3 为节点执行的数据库 API

中文使用文档
文档目录16 节
  1. 安装
  2. 使用量
  3. API 密码
  4. openDatabase( 名称、 版本、 描述、 大小 [, 回调])
  5. 在浏览器中
  6. 读取交易( ) vs 交易( )
  7. 目标
  8. 非目标
  9. 自定义 SQLite3 绑定
  10. SQLiteDatabase( 名称( 字符串) )
  11. 执行( 命令( 命令) ), 仅读( 布尔) , 回调( 函数)
  12. SQL 查询
  13. SQL 结果
  14. 切换方式
  15. 限制
  16. 测试

注:这是 博览叉子没有 'sqlite3' 在 React Industrial 中使用的依赖 .

节点- websql Build Status Coverage Status

这个 WebSQL 数据库 API为节点执行 使用 平方块3。在浏览器中,它回到 window.openDatabase。 。 。 .

安装

npm install websql

使用量

var openDatabase = require('websql');

创建一个名为 SQLite3 的数据库 mydb.db数字 :

var db = openDatabase('mydb.db', '1.0', 'description', 1);

创建内存数据库 :

var db = openDatabase(':memory:', '1.0', 'description', 1);

API 密码

openDatabase( 名称、 版本、 描述、 大小 [, 回调])

这个 name 是数据库的名称。 这是逐字传递给 平方块3。 。 。 .

这个 version 是数据库版本( y)目前被忽略 - 见下文) (中文(简体) ).

这个 description 财务报告和审定财务报表 size 属性被忽略,但需要这些属性 与 WebSQL API 兼容.

这个 callback 只返回返回相同的数据库对象 同步( e)目前不支持迁移 - 见下文) (中文(简体) ).

更多信息,请见WebSQL API 光谱 或者说 各种 教程。 。 。 .

详情 sqlite3,参见 sQLite3 读取器。 。 。 .

在浏览器中

您也可以在浏览器中使用此模块(通过浏览/Webpack/etc.), 在这种情况下,它会只是使用 window.openDatabase,意味着你必须服从 浏览器 WebSQL 支持。 。 。 .

读取交易( ) vs 交易( )

两者 readTransaction() (只读)和 transaction() (已读写) 支持. readTransaction() 有一些小的性能优化, 所以这是值得的 如果交易中没有写入任何数据,则使用.

目标

这个 WebSQL 数据库 API 已贬值 标准,但在许多情况下,重复使用遗留代码是有用的 为支持WebSQL的浏览器而设计. 还有,这让你能快点 在节点测试基于WebSQL的代码,这是方便的.

API 的目标是精确匹配已执行的现有 WebSQL API 在浏览器中。 如果浏览器之间有任何区别(例如. rows[0] 获得支持 在克罗姆语中,只有 rows.item(0) 以撒法里语为后盾,然后是最卑贱的 此库导出分母版本 .

这个库有一个强大的测试套房, 并且已知通过 PouchDB 还有测试套房.

非目标

这个图书馆是 没有 旨在:

  • 发明新的 API, 例如删除数据库, 支持 BLOBs,加密等.
  • 在 Firefox, IE 或其他非 WebSQL 浏览器中支持 WebSQL

换句话说,目标不是携带WebSQL的火炬, 取而代之的是弥补从现有的基于WebSQL的代码到Node.js的漏洞.

自定义 SQLite3 绑定

此库旨在允许可互换的 SQLite3 执行, 超越 刚刚 节点- sqlite3实例:

要创建您的自定义执行, 请使用此 API :

var customOpenDatabase = require('websql/custom');
var openDatabase = customOpenDatabase(SQLiteDatabase);

这个 SQLiteDatabase 执行需要成为构建器类功能 具有这样的构造器签名:

// takes a single argument: the database name
var db = new SQLiteDatabase('dbname');

然后它执行一个单一功能, exec(),像这样:

function exec(queries, readOnly, callback) {
  // queries: an array of SQL statements and queries, with a key "sql" and "args"
  // readOnly: whether or not these queries are in "read only" mode
  // callback: callback to be called with results (first arg is error, second arg is results)
}

以下是完整的规格:

SQLiteDatabase( 名称( 字符串) )

构造新 SQLiteDatbase 对象,带有给定的字符串名称.

执行( 命令( 命令) ), 仅读( 布尔) , 回调( 函数)

执行列表 SQLQuerys. 如果我们在 readOnly 模式,然后是任意 无SELECT 询问需要不执行而丢出错误 。 此函数称为节点样式 调用错误作为第一个参数或 Array<SQLResult> 作为 第二个论点.

SQL 查询

SQL 查询和绑定执行 。 这可以是普通JavaScript对象或自定义类, 只要其成员如下:

sql (竖起)

要执行的 SQL 查询 .

参数( 箭头)

绑定查询的参数 .

例如:

{
  sql: 'INSERT INTO foo values (?, ?)',
  args: ['bar', 'baz']
}

SQL 结果

SQL 查询返回的结果 。 这可以是普通JavaScript对象或自定义类, 只要其成员如下:

错误

一个 Java 脚本 Error 对象,或 undefined 若为 SQLQuery 没有出错。 若为 error 是事实,然后假设 insertId, (中文(简体) ), rowsAffected,以及 rows 确是恶行.

插入Id(数目)

代表新行号的插入ID,或 undefined 如果没有插入任何内容.

受影响的行数(数目)

受查询影响的行数, 如果无则为0 .

行 (Array<对象>)

一行人回来 SELECT 查询,如果没有,则为空.

每个对象都是将按键(列)映射到值(取出值).

例如:

{
  insertId: undefined,
  rowsAffected: 0,
  rows: [
    {'foo': 'bar'},
    {'foo': 'baz'},
  ]
}

或者说:

{
  error: new Error('whoopsie')
}

例如,执行(以及本单元使用的执行) 见 lib/sqlite/SQLiteDatabase.js。 。 。 .

切换方式

版本和迁移 APIs (即说. changeVersion()(中文(简体) ) 不支持。 拉请求欢迎!

限制

  1. 与限制 节点- sqlite3 API 在数据库名称上 (“ Valid 值是文件名 ” , “: memory : ” ) 基于匿名磁盘的数据库和一个空字符串 以及我们缺乏执行特定绘图的兴趣 荣耀 WebSQL 光谱 表示“包括空字符串在内的所有字符串都是有效的数据库 消费者需要使用“姓名”(而且这些姓名对案件有敏感认识) 拥有字符串映射, 以便 1 避免无效文件名出问题 关于大小写不敏感文件系统的文件名,以及至2)避免用户数据库出现 如果使用空字符串或字符串“:memory:”则给予特殊待遇; sQLite 支持的另一种特殊目的字符串形式 逃脱是 file::memory:... URL( URL)。 。 。 .

  2. 虽然WebSQL光谱和SQLite都没有谈到这个问题, node-sqlite3 另有以下内容: 限制 这些声明对我们的用户来说是浮出水面的: 执行到第一个 NULL 字节和 SQL 注释 会导致运行时间出错.

测试

第一个:

npm install

主测试套件 :

npm test

线条 :

npm run lint

在调试模式下进行测试( 例如使用 node-inspector:

npm run test-debug

在浏览器中对照 WebSQL 运行测试套件 :

npm run test-local

对 PhantomJS 进行实际- WebSQL 测试:

npm run test-phantom

版本与发布记录

@expo/websql 共发布 2 个版本,首次发布于 2018/05/19;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.1latest2018/05/198 年前
1.0.0next2018/05/198 年前

关于 @expo/websql 的常见问题

@expo/websql 是什么?

网络SQL 使用 sqlite 3 为节点执行的数据库 API

如何安装 @expo/websql?

在项目目录运行 npm install @expo/websql,或使用 pnpm add / yarn add / bun add。

@expo/websql 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/expo__websql 是否存在。

@expo/websql 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@expo/websql 可以商用吗?

@expo/websql 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@expo/websql 的下载量有多少?

根据 npm 官方下载统计,@expo/websql 在 2026/10/14 – 2026/11/12 这 30 天内被下载 287,224 次,日均约 9,574 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@expo/websql 还在维护吗?

最新版本 1.0.1 发布于 2018/05/19(8 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/05/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。