Knex.js使用心得
Author:zhoulujun Date:
上篇《nodejs连接数据:mysql/mysql2/Knex.js/Sequelize库区别》,介绍个Knex.js,这篇来说下使用心得
Knex.js (发音为 /kəˈnɛks/)是一个功能齐全的 SQL 查询构造器(query builder),支持 PostgreSQL、CockroachDB、MSSQL、MySQL、MariaDB、SQLite3、Better-SQLite3、Oracle 和 Amazon Redshift 等数据库,它的设计宗旨是灵活、便于移植且使用方便。
由于 Node.js 没有提供像 java 中的 JDBC 这样的数据库访问抽象层,导致基于原生的 Node.js 进行数据库编程时,需要面向不同的数据库类型提供的底层 SDK 编程,学习成本高、不可移植。
Knex 建立在底层数据库提供的 SDK 之上,提供统一的 API 数据库接口,可以将其看成是 Node.js 中类似"JDBC"的存在,代码与底层数据库耦合弱,方便在数据库之间迁移(如本地开发测试用 sqlite3,线上用MySQL),无需学习 SQL 方言。
性能:Knex.js的性能可能不如原生的SQL查询,因为它需要将查询构建器转换为SQL查询语句,这可能会导致一些性能损失。
限制:Knex.js的查询构建器可能无法满足所有的查询需求,因为它是基于一组预定义的API构建的,而不是原生的SQL查询语句。
对于追求高性能和自由性的场景,使用原生 SQL 替代即可
knex.raw('SELECT * FROM users WHERE name = ?', ['John']).then((rows) => { console.log(rows); }).catch((err) => { console.error(err); });使用raw方法可以执行原始的 SQL 查询,当预设的 API 无法满足需求时,作为兜底的手段。
最方便的是,Knex.js 提供了数据库工具,使用 Knex.js API 编写好数据库迁移脚本后,交给 Knex.js cli 执行,可以方便地在不同数据库之间迁移数据。
具体使用层面,可以看https://knex.nodejs.cn/guide/transactions.html
感觉使用层面,实在没意啥好写的的
转载本站文章《Knex.js使用心得》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/JS-Server/9279.html