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

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