• home > webfront > ECMAS > nodejs >

    Knex.js使用心得

    Author:zhoulujun Date:

    Knex 建立在底层数据库提供的 SDK 之上,提供统一的 API 数据库接口,方便在数据库之间迁移(如本地开发测试用 sqlite3,线上用MySQL),无需学习 SQL 方言。

    上篇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 方言。

    image.png

    • 性能: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