📜  knex 连接 - Javascript (1)

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

Knex 连接 - Javascript

什么是 Knex?

Knex 是一个基于 JavaScript 的面向对象的 SQL query builder,它可以用于 Node.js 和浏览器环境中执行 SQL 查询。Knex 可以用来执行各种各样的 SQL 查询,包括 SELECT、INSERT、UPDATE、DELETE 等等。

如何安装 Knex?

首先,需要确保你已安装 Node.js。然后,打开终端,输入以下命令:

npm install knex --save

这会下载并安装最新版本的 Knex。

如何使用 Knex?

在开始使用 Knex 之前,需要先配置数据库连接。Knex 支持多种不同的数据库,包括 MySQL、PostgreSQL、SQLite 等等,因此我们需要根据实际情况进行相应的配置。

以下是一个使用 Knex 连接 MySQL 数据库的示例:

const knex = require('knex')({
  client: 'mysql',
  connection: {
    host : 'localhost',
    user : 'root',
    password : 'password',
    database : 'test_db'
  }
});

在这个示例中,我们首先使用 require('knex') 引入 Knex 模块,并创建一个名为 knex 的对象。我们可以通过这个对象来执行各种 SQL 查询。

在创建 knex 对象时,我们需要提供一个配置对象,其中包含了连接数据库所需的信息。其中,client 属性指定了数据库类型,connection 属性指定了连接信息。

如何执行 SQL 查询?

在成功连接到数据库后,就可以使用 knex 对象执行各种 SQL 查询了。以下是一个示例:

knex('users').select('name', 'email')
  .then(rows => console.log(rows))
  .catch(err => console.log(err));

这个示例中,我们使用 knex('users') 方法选择了 users 表,并使用 select 方法查询了 nameemail 字段。查询结果会作为一个 Promise 对象返回,我们可以使用 then 方法来处理查询结果,也可以使用 catch 方法来处理异常情况。

如何执行事务?

事务可以保证一系列的数据库操作要么全部成功,要么全部失败。在 Knex 中,我们可以使用 transaction 方法来执行事务。以下是一个示例:

knex.transaction(function(trx) {
  const userId = 1;
  return trx('users').where('id', userId)
    .update({email: 'new-email@example.com'})
    .then(function() {
      return trx('accounts').where('user_id', userId)
        .update({balance: 100})
    });
})
.then(function() {
  console.log('Transction complete');
})
.catch(function(err) {
  console.error(err);
});

在这个示例中,我们通过 knex.transaction 方法创建了一个事务,并在其中执行了两个操作:首先更新了 users 表中 id1 的用户的 email 字段,然后更新了 accounts 表中所有属于该用户的账户的 balance 字段。如果其中任意一个操作失败,整个事务都会被回滚,没有一个操作会被提交。

总结

Knex 是一个非常强大的 SQL query builder,它可以轻松地执行各种 SQL 查询,还支持事务等高级功能。如果你需要在 Node.js 中连接和查询数据库,Knex 绝对是一个值得尝试的选择。