📅  最后修改于: 2023-12-03 15:25:22.115000             🧑  作者: Mango
在开发 web 应用程序时,连接到数据库是一个重要的一步。Knex.js 是一个灵活、可扩展的 Node.js SQL Query Builder 和 ORM,允许我们轻松地与各种数据库集成。
这里将介绍如何将 Knex.js 与 Node.js 服务器连接,以便从服务器通过 Knex.js 访问数据库。
为了使用 Knex.js 需要确保以下环境:
以下是将 Node.js 服务器与 Knex.js 数据库连接的步骤:
使用以下命令安装 Knex.js 和数据库驱动程序:
npm install knex mysql2
或者使用 Yarn:
yarn add knex mysql2
在开始连接到数据库之前,需要创建一个数据库。
需要登录到你的数据库管理系统 (如 phpMyAdmin),并创建一个新的名为 testdb
的数据库。
创建一个名为 knexfile.js
的文件,并将以下内容添加到该文件:
module.exports = {
development: {
client: 'mysql2',
connection: {
host: '127.0.0.1',
user: 'root',
password: '',
database: 'testdb'
},
migrations: {
tableName: 'migrations'
}
}
}
在这个配置中,我们定义了一个开发环境,并将其连接到 MySQL2 数据库。以下是我们为此声明的选项:
client
: 数据库客户端名称。Knex.js 可以与各种数据库配合使用。connection
: 指定如何连接到数据库的详细信息,如数据库连接字符串、用户名、密码等。migrations
: 选项用于指定数据库迁移的设置。运行以下命令进行数据迁移:
npx knex migrate:make create_users_table
运行这个命令后,会在当前目录的 migrations
文件夹中,创建一个新的 migration 文件,文件名为当前时间戳和 migrations 名称。
在新创建的 migration 文件中,我们将添加用于创建一个新的 users
数据表的代码:
exports.up = function(knex) {
return knex.schema.createTable('users', function (table) {
table.increments('id')
table.string('name')
table.string('email')
table.string('password')
table.timestamps(false, true)
})
}
exports.down = function(knex) {
return knex.schema.dropTable('users')
}
在 exports.up
方法中,我们使用 knex.schema.createTable()
方法来创建一个新的 users
数据表。其中,我们为该表定义了这些列:
id
: 主键。name
: 用户名。email
: 电子邮件地址。password
: 用户密码。timestamps
: 创建时间和更新时间。在 exports.down
方法中,我们使用 knex.schema.dropTable()
方法来删除该数据表。
运行以下命令来执行迁移:
npx knex migrate:latest
如果命令运行成功,将会创建一个新的 users
数据表,该表将包含以前声明的列。
最后,我们可以在 Node.js 服务器中使用 Knex.js 来连接到数据库并执行一些查询。
创建一个名为 app.js
的文件,并将以下代码添加到该文件:
const express = require('express')
const knex = require('knex')
const app = express()
// 创建 Knex 实例
const db = knex(require('./knexfile').development)
// 获取所有用户
app.get('/users', async (req, res, next) => {
try {
const users = await db('users').select('*')
res.json(users)
} catch (err) {
next(err)
}
})
// 添加新用户
app.post('/users', async (req, res, next) => {
try {
const [ id ] = await db('users').insert(req.body)
const user = await db('users').where('id', id).first()
res.json(user)
} catch (err) {
next(err)
}
})
// 启动服务器
app.listen(3000, () => {
console.log('Server started on http://localhost:3000')
})
在这个代码中,我们首先创建了一个 Knex 实例,以便在我们的服务器中使用。
然后,我们定义了两个路由来获取所有用户和添加新用户。
最后,我们启动一个监听在 3000 端口的服务器,并向控制台输出一个消息来表示应用已经启动。
Knex.js 是一个灵活、可扩展的 Node.js SQL Query Builder 和 ORM,它可以轻松地与各种数据库配合使用。
通过本文我们学习:
希望这篇教程可以帮助你开始使用 Knex.js 来构建强大的 web 应用程序。