knex

文档

中文文档 https://www.songxingguo.com/2018/06/30/knex.js-query/ (这个中文文档已经不存在了)
英文文档 https://knexjs.org/

knex.js

Knex的主要目标环境是Node.js,需要安装该knex库,然后安装适当的数据库库:pg适用于PostgreSQL和Amazon Redshift,mysql适用于MySQL或MariaDB,sqlite3适用于SQLite3或mssql适用于MSSQL。
初始化数据库

let db = Knex({
    
    
  client: 'mysql',
  connection: {
    
    
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
});
global._db = db; //设为全局

简单的语句中文文档里就可以查到

讲一下多表查询

连接构建器可用于指定表之间的连接,第一个参数是连接表,后三个参数分别是第一个连接列,连接操作符和第二个连接列。

例:

knex('users')
.join('contacts', 'users.id', '=', 'contacts.user_id')
.select('users.id', 'contacts.phone')

输出:

select `users`.`id`, `contacts`.`phone` from `users` inner join `contacts` on `users`.`id` = `contacts`.`user_id`

使用join时所有字段前都必须加上表名

async getTask(params){
    
    
  let result = await global._db('table1')
    .where('table1.user',params.user)
    .join('table2','table1.id','=','table2.id')
    .select('table1.name','table1.id','table2.id');
  return result;
}

这里讲一下复杂语句的实现,可以在英文文档中找

原始sql语句为

select count(*) as user_count, status from 'users' where 1 or status <> 1 group by 'status'
let sql = [
  `count(*) as user_count, status from 'users' where 1 or status <> 1 group by 'status'`
];
let result = await _db.select(_db.row(sql.join(',')));
let a = result.toString(); //返回基于绑定等填充正确值的查询字符串数组。用于调试,但不应用于创建查询以针对DB运行它们。
let b = result.clone();
return {
    
    
	result: result,
	a: a,
	b: b
};

或者用文档提供的这种方法
在这里插入图片描述

批量插入方法

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/callmeCassie/article/details/96510071