MySQL Knex NodeJS 的使用及向数据库插入数据
阅读更多:MySQL 教程
简介
MySQL 是一个流行的关系型数据库管理系统。在开发 Web 应用程序时,我们常常需要与数据库进行交互。NodeJS 作为一种流行的服务器端平台,提供了许多工具和库来访问数据库。Knex 是一个强大且易于使用的 Javascript 库,它允许您与 MySQL 数据库交互,并为您提供了一种流畅的编程体验。
在本文中,我们将学习如何使用 MySQL Knex NodeJS,以及如何向数据库插入数据和使用 Knex 的一些高级功能。
安装
我们需要安装以下软件:
- MySQL 数据库 – 您可以从 MySQL 官方网站下载安装程序;
- NodeJS – 您可以从 NodeJS 官方网站下载。
安装完成后,您需要安装 Knex:
npm install knex --save
连接到 MySQL 数据库
在使用 Knex 之前,我们需要建立一个 MySQL 数据库,然后创建一个数据库表。假设我们已经完成了这些步骤,并且现在需要连接到数据库。
在 NodeJS 中,我们可以使用以下代码进行连接:
const knex = require('knex')({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'your_database_password',
database: 'myapp_test'
}
});
这将创建一个名为 knex
的连接,在此之后,您可以开始使用 Knex 进行查询。
插入数据
我们使用 knex
对象插入数据。以下代码将向数据库中的 users
表中插入一行数据:
knex('users').insert({name: 'John', age: 30})
.then(() => {
console.log('Inserted');
})
.catch((err) => {
console.log(err);
});
在上面的代码中,我们使用 knex
对象中的 insert
方法,并传入一个对象。该对象包含要插入新行的列和对应的值。在此之后,我们使用 Promise 进行回调。
查询数据
我们可以使用 knex
对象执行各种类型的查询。以下是使用 knex
对象查询数据的一些示例。
选择所有行和列
knex.select().table('users')
.then((rows) => {
console.log(rows);
})
.catch((err) => {
console.log(err);
});
在上面的代码中,我们使用 select
方法选择所有行和列。然后,我们使用 table
方法指定表。在此之后,我们使用 Promise 进行回调。
选择指定的列
knex.select('name', 'age').table('users')
.then((rows) => {
console.log(rows);
})
.catch((err) => {
console.log(err);
});
在上面的代码中,我们使用 select
方法选择 name
和 age
列。然后,我们使用 table
方法指定表。在此之后,我们使用 Promise 进行回调。
选择带有条件的行
knex('users').where('age', '>', 20)
.then((rows) => {
console.log(rows);
})
.catch((err) => {
console.log(err);
});
在上面的代码中,我们使用 where
方法选择年龄大于 20 岁的行。然后,我们使用 Promise 进行回调。
更多的查询方式可以参考 Knex 文档。
Promise 风格和回调风格
Knex 支持 Promise 风格和回调风格。您可以使用其中的任何一种,具体取决于您的喜好和风格。以下是一个使用回调风格的示例:
knex('users').insert({name: 'John', age: 30}, function(err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
}
});
在上面的代码中,我们将回调函数传递给 insert
方法。回调函数包含两个参数:错误和结果。如果错误不为 null,结果将为 null。否则,结果将包含插入的行的 ID。
高级功能
Knex 提供了许多高级功能,使您能够编写更简洁和清晰的代码。以下是一些示例。
事务
knex.transaction((trx) => {
return trx.from('users').where('id', 1)
.update('age', 35)
.then(() => {
return trx.insert({name: 'Alex', age: 21})
.into('users');
});
})
.then(() => {
console.log('Transaction complete');
})
.catch((err) => {
console.log(err);
});
在上面的代码中,我们使用 transaction
方法创建一个事务。然后,我们在事务中执行两个操作。如果所有操作都成功,则提交事务。否则,回滚事务。
批处理插入
knex.batchInsert('users', [{name: 'John', age: 30}, {name: 'Alex', age: 21}])
.then(() => {
console.log('Batch inserted');
})
.catch((err) => {
console.log(err);
});
在上面的代码中,我们使用 batchInsert
方法批处理插入多个行。在此之后,我们使用 Promise 进行回调。
连接池
const knex = require('knex')({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'your_database_password',
database: 'myapp_test'
},
pool: { min: 0, max: 7 }
});
在上面的代码中,我们使用 pool
属性指定连接池配置。
总结
MySQL Knex NodeJS 是一种非常流行的组合,使您能够有效地访问和操作数据库。在这篇文章中,我们学习了如何连接到 MySQL 数据库,并使用 Knex 插入和查询数据。此外,我们还介绍了一些 Knex 的高级功能,如事务、批处理插入和连接池等。
学习 MySQL Knex NodeJS 能够帮助您更好地管理数据库,并使您的程序更加高效和可靠。