📜  将节点服务器与 knex 数据库连接 - Javascript (1)

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

将节点服务器与 Knex 数据库连接 - JavaScript

在开发 web 应用程序时,连接到数据库是一个重要的一步。Knex.js 是一个灵活、可扩展的 Node.js SQL Query Builder 和 ORM,允许我们轻松地与各种数据库集成。

这里将介绍如何将 Knex.js 与 Node.js 服务器连接,以便从服务器通过 Knex.js 访问数据库。

环境要求

为了使用 Knex.js 需要确保以下环境:

  • Node.js v8.0.0 或更高版本
  • 一个支持 Promise 的数据库 (如 MySQL, PostgreSQL, SQLite 等)
  • NPM 或 Yarn
步骤

以下是将 Node.js 服务器与 Knex.js 数据库连接的步骤:

第 1 步 - 安装依赖

使用以下命令安装 Knex.js 和数据库驱动程序:

npm install knex mysql2

或者使用 Yarn:

yarn add knex mysql2
第 2 步 - 创建数据库

在开始连接到数据库之前,需要创建一个数据库。

需要登录到你的数据库管理系统 (如 phpMyAdmin),并创建一个新的名为 testdb 的数据库。

第 3 步 - 创建 Knex 配置文件

创建一个名为 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: 选项用于指定数据库迁移的设置。
第 4 步 - 进行数据迁移

运行以下命令进行数据迁移:

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 数据表,该表将包含以前声明的列。

第 5 步 - 在 Node.js 服务器中使用 Knex.js

最后,我们可以在 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 与 Node.js 服务器连接到数据库。
  • 如何使用 Knex.js 创建数据迁移并执行查询。

希望这篇教程可以帮助你开始使用 Knex.js 来构建强大的 web 应用程序。