当前位置: 首页 > web >正文

Knex 和 Schema 是什么?

Knex

  • Knex.js 是一个 SQL 查询构建器(SQL Query Builder),运行在 Node.js 上。
  • 它的主要作用是 用 JavaScript 来操作数据库,而不是手写 SQL。
  • 支持多种数据库(MySQL、Postgres、SQLite、Oracle、MSSQL 等)。

你可以用 Knex 来做:

  • 查询(select、insert、update、delete)
  • 事务
  • 迁移(migrations)
  • Schema 定义(建表、改表)

Schema

  • Schema 在数据库里是 数据库结构的定义,包括:

    • 数据库里的表(tables)
    • 字段(columns)
    • 数据类型(int、varchar、text、json 等)
    • 主键、外键、索引、约束

举个例子,一个电商系统的 Schema 可能是:

  • 用户表(users)
  • 商品表(products)
  • 订单表(orders)
  • 订单与用户、商品的关系

Knex 里,Schema 指的是 Schema Builder(模式构建器),用来通过 JavaScript 定义数据库表结构。


示例:Knex + Schema

用 Knex 的 schema 创建一个用户表:

const knex = require('knex')({client: 'mysql2',connection: { host: '127.0.0.1', user: 'root', password: '123456', database: 'testdb' }
});// 创建 users 表
knex.schema.createTable('users', (table) => {table.increments('id').primary();  // 自增主键table.string('name', 100).notNullable();  // 用户名table.integer('age').defaultTo(18);  // 年龄table.timestamps(true, true); // created_at & updated_at
})
.then(() => console.log('用户表已创建'))
.catch((err) => console.error(err));

这段代码相当于 SQL:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT DEFAULT 18,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

总结

  • Knex = 工具(帮你写 SQL、管理迁移、操作数据库)
  • Schema = 数据库结构(表、字段、关系),在 Knex 里可以用 Schema Builder 定义

可以理解为:

  • Knex 是“工人”
  • Schema 是“设计图”
  • 数据库是“工地”

在这里插入图片描述

http://www.xdnf.cn/news/20548.html

相关文章:

  • 从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发
  • 像素图生成小程序开发全解析:从图片上传到Excel图纸
  • Spring Cloud Alibaba快速入门02-Nacos(上)
  • java社交小程序源码支持APP多端springboot部署与功能模块详解
  • *和->的区别
  • FC平台安装Windows Server2016并连接V6存储
  • C++并发编程指南 std::async 介绍使用
  • 使用 n8n 结合通义千问大模型构建业务数据库分析智能体
  • %前置模糊查询优化
  • shell脚本作业
  • 4.6 多个光源
  • 【数论】P10580 [蓝桥杯 2024 国 A] gcd 与 lcm|普及+
  • MapStruct详解
  • Linux RCU (Read-Copy-Update) 机制深度分析
  • leetcode 912 排序数组(快速排序)
  • 【CV】Opencv图像处理——①几何变换 (1)
  • 神马 M66S+ 282T矿机参数详解:SHA-256算法与Hydro冷却技术
  • 贪心算法应用:食品生产线排序问题详解
  • 继承详解(c++)
  • langchain源码概览
  • Java全栈开发面试实录:从基础到实战的深度解析
  • 【牛客刷题-剑指Offer】BM18 二维数组中的查找:一题四解,从暴力到最优
  • Python元组:不可变但灵活的数据容器
  • LwIP入门实战 — 3 以太网外设 (ETH)
  • 什么是JQ
  • solidity函数篇2
  • Netty从0到1系列之EventLoop
  • 魅族 Note 16 解锁 BL 及 Root 官方刷机包下载Flyme 12.0.1.5A 型号 M521Q
  • 基于SVN搭建企业内部知识库系统实践
  • 试用电子实验记录本ELN的经验之谈