Appearance
Knex
knex.js是一个nodejs的sql构建器。
安装
bash
npm install knex --save
# 还需要安装驱动,这里私用sqlite
npm install better-sqlite3例子
初始化
javascript
const knex = require('knex');
const path = require('path');
const filePath = path.join(__dirname, 'data', 'test-objection.db');
const db = knex({
client: 'better-sqlite3',
connection: {
filename: filePath,
},
useNullAsDefault: true,
});
async function setup() {
// 删除表
await db.schema.dropTableIfExists('users');
// 创建表
await db.schema.createTable('users', (table) => {
table.increments('id').primary();
table.string('name').notNullable();
table.integer('age').nullable();
table.string('email').nullable();
table.string('password').notNullable();
});
}
async function main() {
try {
await setup();
} finally {
setTimeout(async () => {
await db.destroy();
console.log('数据库连接已关闭');
}, 3000);
}
}
main();运行后就能得到一个表users。
增删改查
javascript
const knex = require('knex');
const path = require('path');
const filePath = path.join(__dirname, 'data', 'test-objection.db');
const db = knex({
client: 'better-sqlite3',
connection: {
filename: filePath,
},
useNullAsDefault: true,
// 开启调试模式,打印SQL语句和参数
debug: true
});
async function setup() {
// 删除表
await db.schema.dropTableIfExists('orders');
await db.schema.dropTableIfExists('users');
// 创建表
await db.schema.createTable('users', (table) => {
table.increments('id').primary();
table.string('name').notNullable();
table.integer('age').nullable();
table.string('email').nullable();
table.string('password').notNullable();
table.datetime('some_time');
table.timestamps();
});
// 创建表 订单表
await db.schema.createTable('orders', (table) => {
table.increments('id').primary();
table.integer('user_id').notNullable();
table.string('order_no').notNullable();
table.decimal('total_price', 10, 2).notNullable();
table.timestamps();
});
// 插入一条数据
await db('users').insert({
name: 'qk',
email: 'qk@example.com',
password: '123456',
age: 25,
some_time: new Date('2026-01-01').toISOString(),
created_at: new Date('2026-01-01'),
updated_at: new Date('2026-01-01'),
});
// 插入多条数据
const result = await db('users').insert([
{
name: 'qk1',
email: 'qk1@example.com',
password: '123456',
age: 18,
some_time: new Date('2026-01-04').toISOString(),
created_at: new Date('2026-01-08'),
updated_at: new Date('2026-03-04'),
},
{
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: new Date('2026-02-01').toISOString(),
created_at: new Date('2026-02-01'),
updated_at: new Date('2026-04-01'),
},
]);
console.log(result);
// 查询数据
const users = await db('users').select();
console.log('查询到的用户数据:', users);
// 分页查询,limit是页大小,offset是偏移量,从0开始计数,(currentPage - 1) * pageSize
const currentPage = 2;
const pageSize = 2;
const users111 = await db('users').select().offset((currentPage - 1) * pageSize).limit(pageSize);
console.log('分页查询1:查询到的用户数据:', users111);
const users211 = await db('users').select().offset(currentPage * pageSize).limit(pageSize);
console.log('分页查询2:查询到的用户数据:', users211);
// 查询数量
const count = await db('users').count();
console.log('查询数量:', count);
const count2 = await db('users').count('id', { as: 'user_count' });
console.log('查询数量:', count2);
// 带条件查询
const user = await db('users').select().where('name', 'qk1');
console.log('条件查询1:查询到的用户数据:', user);
const user2 = await db('users').select().where({
name: 'qk1',
email: 'qk1@example.com',
});
console.log('条件查询2:查询到的用户数据:', user2);
const user21 = await db('users').select().orWhere({
name: 'qk1',
email: 'qk1@example.com',
}).orWhere({ password: '123456' });
console.log('条件查询3:查询到的用户数据:', user21);
// 模糊查询
const users2 = await db('users').select().where('name', 'like', '%qk%');
console.log('模糊查询:查询到的用户数据:', users2);
// 不等于查询
const users3 = await db('users').select().where('name', '<>', 'qk1');
console.log('不等于查询:查询到的用户数据:', users3);
const users4 = await db('users').select().whereNot('name', 'qk1');
console.log('不等于查询4:查询到的用户数据:', users4);
// 大于等于查询
const users5 = await db('users').select().where('age', '>=', 18);
console.log('大于等于查询:查询到的用户数据:', users5);
// 小于等于查询
const users6 = await db('users').select().where('age', '<=', 18);
console.log('小于等于查询:查询到的用户数据:', users6);
// 范围查询
const users7 = await db('users').select().where('age', 'between', [18, 20]);
console.log('范围查询:查询到的用户数据:', users7);
// 日期查询
const users8 = await db('users').select().where('some_time', '>=', new Date('2026-01-01'));
console.log('日期查询:查询到的用户数据:', users8);
// 日期范围
const users9 = await db('users').select().where('some_time', 'between', ['2026-02-01', '2026-04-01']);
console.log('日期范围查询:查询到的用户数据:', users9);
// in 和 not in 查询
const users10 = await db('users').select().where('age', 'in', [18, 20]);
console.log('in 查询:查询到的用户数据:', users10);
const users11 = await db('users').select().whereNotIn('age', [18, 20]);
console.log('not in 查询:查询到的用户数据:', users11);
// null查询
const users12 = await db('users').select().where('age', 'is', null);
console.log('null 查询:查询到的用户数据:', users12);
// null查询,使用whereNull
const users13 = await db('users').select().whereNull('age');
console.log('null 查询:查询到的用户数据:', users13);
// not null查询
const users14 = await db('users').select().where('age', 'is not', null);
console.log('not null 查询:查询到的用户数据:', users14);
// not null查询,使用whereNotNull
const users15 = await db('users').select().whereNotNull('age');
console.log('not null 查询:查询到的用户数据:', users15);
// 关联查询,先插入用户订单数据,使用join查询
await db('orders').insert({
user_id: 1,
order_no: '123456',
total_price: 100.00,
});
const orders = await db('orders').join('users', 'orders.user_id', '=', 'users.id').where('users.id', 1).select();
console.log('关联查询:查询到的订单数据:', orders);
// 仅查询第一条数据
const user1 = await db('users').select().where('name', 'like', '%qk%').first();
console.log('仅查询符合条件的第一条数据:查询到的用户数据:', user1);
// 修改数据
await db('users').where('id', 1).update({
name: 'qk11',
email: 'qk11@example.com',
});
console.log('修改数据:查询到的用户数据:', await db('users').where('id', 1).select());
// 删除数据
await db('users').where('id', 1).delete();
console.log('删除数据:查询到的用户数据:', await db('users').where('id', 1).select());
}
async function main() {
try {
await setup();
} finally {
setTimeout(async () => {
await db.destroy();
console.log('数据库连接已关闭');
}, 3000);
}
}
main();打印结果
txt
[ { sql: 'drop table if exists `orders`', bindings: [] } ]
[ { sql: 'drop table if exists `users`', bindings: [] } ]
[
{
sql: 'create table `users` (`id` integer not null primary key autoincrement, `name` varchar(255) not null, `age` integer null, `email` varchar(255) null, `password` varchar(255) not null, `some_time` datetime, `created_at` datetime, `updated_at` datetime)',
bindings: []
}
]
[
{
sql: 'create table `orders` (`id` integer not null primary key autoincrement, `user_id` integer not null, `order_no` varchar(255) not null, `total_price` float not null, `created_at` datetime, `updated_at` datetime)',
bindings: []
}
]
{
method: 'insert',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [
25,
2026-01-01T00:00:00.000Z,
'qk@example.com',
'qk',
'123456',
'2026-01-01T00:00:00.000Z',
2026-01-01T00:00:00.000Z
],
__knexQueryUid: 'VrNIpdbwnaUW-MR2IDcAI',
sql: 'insert into `users` (`age`, `created_at`, `email`, `name`, `password`, `some_time`, `updated_at`) values (?, ?, ?, ?, ?, ?, ?)',
returning: undefined
}
{
method: 'insert',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [
18,
2026-01-08T00:00:00.000Z,
'qk1@example.com',
'qk1',
'123456',
'2026-01-04T00:00:00.000Z',
2026-03-04T00:00:00.000Z,
20,
2026-02-01T00:00:00.000Z,
'qk2@example.com',
'qk2',
'123456',
'2026-02-01T00:00:00.000Z',
2026-04-01T00:00:00.000Z
],
__knexQueryUid: 'h_frHs-KD4LExeigubQGl',
sql: 'insert into `users` (`age`, `created_at`, `email`, `name`, `password`, `some_time`, `updated_at`) select ? as `age`, ? as `created_at`, ? as `email`, ? as `name`, ? as `password`, ? as `some_time`, ? as `updated_at` union all select ? as `age`, ? as `created_at`, ? as `email`, ? as `name`, ? as `password`, ? as `some_time`, ? as `updated_at`',
returning: undefined
}
[ 3 ]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: 'hviyCXoU7DDi--f0nbSt3',
sql: 'select * from `users`'
}
查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 2, 2 ],
__knexQueryUid: 'k6vbYPUzjnxR3nSR5JyH-',
sql: 'select * from `users` limit ? offset ?'
}
分页查询1:查询到的用户数据: [
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 2, 4 ],
__knexQueryUid: 'kCAA-CTNvaH2WP-O3g0iO',
sql: 'select * from `users` limit ? offset ?'
}
分页查询2:查询到的用户数据: []
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: '6NY2Qjb5V74XChVMLNKpk',
sql: 'select count(*) from `users`'
}
查询数量: [ { 'count(*)': 3 } ]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: '5d7wCrKRqKkeVYMzPpy35',
sql: 'select count(`id`) as `user_count` from `users`'
}
查询数量: [ { user_count: 3 } ]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'qk1' ],
__knexQueryUid: 'OFTX_PrbH7eY62z9s-Jdp',
sql: 'select * from `users` where `name` = ?'
}
条件查询1:查询到的用户数据: [
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'qk1', 'qk1@example.com' ],
__knexQueryUid: 'YYXzUEvVZqONG7daTeqb6',
sql: 'select * from `users` where `name` = ? and `email` = ?'
}
条件查询2:查询到的用户数据: [
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'qk1', 'qk1@example.com', '123456' ],
__knexQueryUid: 'fA5qT_Cm9DnMEwHg6dER9',
sql: 'select * from `users` where (`name` = ? and `email` = ?) or (`password` = ?)'
}
条件查询3:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '%qk%' ],
__knexQueryUid: 'Jz9FkBtmYv9ZzsDuwJVxg',
sql: 'select * from `users` where `name` like ?'
}
模糊查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'qk1' ],
__knexQueryUid: 'UVJ1GEJ4iXNr2XYdLStYd',
sql: 'select * from `users` where `name` <> ?'
}
不等于查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'qk1' ],
__knexQueryUid: 'jrszAzUxBO6EeB0E6Evhb',
sql: 'select * from `users` where not `name` = ?'
}
不等于查询4:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 18 ],
__knexQueryUid: 'hhOzW6xhX4ic_a4YCNfbz',
sql: 'select * from `users` where `age` >= ?'
}
大于等于查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 18 ],
__knexQueryUid: 'cL-kqtJEX4uAHp8NL_mEo',
sql: 'select * from `users` where `age` <= ?'
}
小于等于查询:查询到的用户数据: [
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 18, 20 ],
__knexQueryUid: 'shWw4itt42noqbOcRcs-K',
sql: 'select * from `users` where `age` between ? and ?'
}
范围查询:查询到的用户数据: [
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 2026-01-01T00:00:00.000Z ],
__knexQueryUid: 'yrkOiY86ehXsaBKOfksMj',
sql: 'select * from `users` where `some_time` >= ?'
}
日期查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '2026-02-01', '2026-04-01' ],
__knexQueryUid: 'X9IHpD-0J5yAjZmTJ6qLS',
sql: 'select * from `users` where `some_time` between ? and ?'
}
日期范围查询:查询到的用户数据: [
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 18, 20 ],
__knexQueryUid: 'pRv7Zf_5itR9Cq20vk8zO',
sql: 'select * from `users` where `age` in (?, ?)'
}
in 查询:查询到的用户数据: [
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 18, 20 ],
__knexQueryUid: '1R2RGYfInLltUk8zrw3Lh',
sql: 'select * from `users` where `age` not in (?, ?)'
}
not in 查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: 'agh4HOIG-mhwZpYIpu0n1',
sql: 'select * from `users` where `age` is null'
}
null 查询:查询到的用户数据: []
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: 'AfRnUnPl4kc8LtTm0LmEU',
sql: 'select * from `users` where `age` is null'
}
null 查询:查询到的用户数据: []
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: 'mueUDQCl8Mp8TLNeO1B6S',
sql: 'select * from `users` where `age` is not null'
}
not null 查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [],
__knexQueryUid: 'K-yMC-VLgpuW4rs-EAEVf',
sql: 'select * from `users` where `age` is not null'
}
not null 查询:查询到的用户数据: [
{
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
},
{
id: 2,
name: 'qk1',
age: 18,
email: 'qk1@example.com',
password: '123456',
some_time: '2026-01-04T00:00:00.000Z',
created_at: 1767830400000,
updated_at: 1772582400000
},
{
id: 3,
name: 'qk2',
age: 20,
email: 'qk2@example.com',
password: '123456',
some_time: '2026-02-01T00:00:00.000Z',
created_at: 1769904000000,
updated_at: 1775001600000
}
]
{
method: 'insert',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '123456', 100, 1 ],
__knexQueryUid: 's3TE7TmgTsYV0rqHBY0Fz',
sql: 'insert into `orders` (`order_no`, `total_price`, `user_id`) values (?, ?, ?)',
returning: undefined
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 1 ],
__knexQueryUid: 'mItKr3dVO6Ts4wQkL5_o_',
sql: 'select * from `orders` inner join `users` on `orders`.`user_id` = `users`.`id` where `users`.`id` = ?'
}
关联查询:查询到的订单数据: [
{
id: 1,
user_id: 1,
order_no: '123456',
total_price: 100,
created_at: 1767225600000,
updated_at: 1767225600000,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z'
}
]
{
method: 'first',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '%qk%', 1 ],
__knexQueryUid: 'y-TwiNfvJ5D5sDNE4xufb',
sql: 'select * from `users` where `name` like ? limit ?'
}
仅查询符合条件的第一条数据:查询到的用户数据: {
id: 1,
name: 'qk',
age: 25,
email: 'qk@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
}
{
method: 'update',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'qk11', 'qk11@example.com', 1 ],
__knexQueryUid: 'X1NnaDA2o3LFXY3hW5Qxg',
sql: 'update `users` set `name` = ?, `email` = ? where `id` = ?',
returning: undefined
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 1 ],
__knexQueryUid: 'AOgU4x-aXK8uzCulC6grx',
sql: 'select * from `users` where `id` = ?'
}
修改数据:查询到的用户数据: [
{
id: 1,
name: 'qk11',
age: 25,
email: 'qk11@example.com',
password: '123456',
some_time: '2026-01-01T00:00:00.000Z',
created_at: 1767225600000,
updated_at: 1767225600000
}
]
{
method: 'del',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 1 ],
__knexQueryUid: 'Ld4KpSb-C3SoqJ0Pzqid_',
sql: 'delete from `users` where `id` = ?'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 1 ],
__knexQueryUid: 'MAotQmuz5omM1--N-x684',
sql: 'select * from `users` where `id` = ?'
}
删除数据:查询到的用户数据: []
数据库连接已关闭