📜  像 knex - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:44.173000             🧑  作者: Mango

像 Knex - JavaScript

Knex是一个用于构建SQL查询的JavaScript库。它允许你使用JavaScript来构建和执行SQL查询,同时具有不同类型数据库的兼容性。

特点
  • 构建可读性强的SQL查询
  • 具有多种数据源的兼容性
  • 支持Promise,使查询更加高效
  • 支持事务
安装

你可以使用npm命令来安装Knex。

npm install knex
连接到数据库

Knex支持多种数据库,如PostgreSQL,MySQL,SQLite等等。 连接到数据库的代码如下所示:

const knex = require('knex')({
  client: 'pg',
  connection: {
     host : 'localhost',
     user : 'your_database_user',
     password : 'your_database_password',
     database : 'myapp_test'
  }
});
构建查询

Knex允许你使用JavaScript构建可读性强的SQL查询。以下是一个简单的查询示例:

knex('users')
  .select('id', 'name', 'email')
  .where('name', 'like', '%john%')
  .orWhere('email', 'like', '%john%')
  .then(rows => {
    console.log(rows);
  });
使用Promise

Knex支持Promise,使查询更加高效。以下是一个使用Promise的示例:

knex('users')
  .select('id', 'name', 'email')
  .where('name', 'like', '%john%')
  .orWhere('email', 'like', '%john%')
  .then(rows => {
    console.log(rows);
  })
  .catch(error => {
    console.log(error);
  });
支持事务

Knex支持事务。以下是一个使用事务的示例:

knex.transaction(trx => {
  knex('users')
    .transacting(trx)
    .insert({name: 'John', email: 'john@example.com'})
    .then(() => knex('accounts')
      .transacting(trx)
      .insert({user_id: userId, account_name: 'Test account'})
    )
    .then(trx.commit)
    .catch(trx.rollback);
})
.then(() => {
  console.log('Transaction complete.');
})
.catch(error => {
  console.log(`Transaction failed. ${error}`)
});
总结

Knex是一个强大的JavaScript库,可用于构建SQL查询。它提供了多种数据源的兼容性,具有可读性强的SQL查询和支持Promise和事务等功能。如果你需要构建可读性强的SQL查询,Knex是一款值得尝试的JavaScript库。