nodejs 连接数据库查询数据库操作

2025-04-15 20

Image

nodejs 连接数据库查询数据库操作

在Node.js中连接数据库并进行查询操作是一个常见的需求。提供几种解决方案,包括使用mysql模块、mongoose模块(针对MongoDB)以及knex模块(SQL查询构建器)。我们将详细讲解每种方法的实现步骤,并附上代码示例。

解决方案

在Node.js中,我们可以使用多种方式来连接和操作数据库。以下是几种常用的方法:
1. 使用mysql模块直接连接MySQL数据库。
2. 使用mongoose模块操作MongoDB数据库。
3. 使用knex模块作为SQL查询构建器,支持多种数据库类型。

接下来,我们将逐一介绍这些方法,并提供详细的代码示例。


方法一:使用 mysql 模块连接 MySQL 数据库

步骤 1:安装 mysql 模块

确保你已经安装了mysql模块。如果没有,请运行以下命令:
bash
npm install mysql

步骤 2:编写代码连接数据库

下面是一个完整的代码示例,展示如何使用mysql模块连接到MySQL数据库并执行查询操作。

javascript
// 引入 mysql 模块
const mysql = require('mysql');</p>

<p>// 创建数据库连接
const connection = mysql.createConnection({
    host: 'localhost',        // 数据库主机地址
    user: 'root',            // 数据库用户名
    password: 'password',     // 数据库密码
    database: 'test_db'      // 数据库名称
});</p>

<p>// 连接到数据库
connection.connect((err) => {
    if (err) {
        console.error('Error connecting to the database:', err.stack);
        return;
    }
    console.log('Connected to the database as ID ' + connection.threadId);
});</p>

<p>// 执行 SQL 查询
const querySql = 'SELECT * FROM users';  // 假设有一个 users 表
connection.query(querySql, (error, results, fields) => {
    if (error) throw error;</p>

<pre><code>console.log('Query Results:', results);

});

// 关闭数据库连接
connection.end((err) => {
if (err) {
console.error('Error closing the connection:', err.stack);
return;
}
console.log('Connection closed.');
});

解释

  • mysql.createConnection():创建一个到MySQL数据库的连接。
  • connection.connect():建立与数据库的连接。
  • connection.query():执行SQL查询。
  • connection.end():关闭数据库连接。

方法二:使用 mongoose 模块连接 MongoDB 数据库

步骤 1:安装 mongoose 模块

确保你已经安装了mongoose模块。如果没有,请运行以下命令:
bash
npm install mongoose

步骤 2:编写代码连接数据库

下面是一个完整的代码示例,展示如何使用mongoose模块连接到MongoDB数据库并执行查询操作。

javascript
// 引入 mongoose 模块
const mongoose = require('mongoose');</p>

<p>// 连接到 MongoDB 数据库
mongoose.connect('mongodb://localhost:27017/test_db', { useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => console.log('Connected to MongoDB'))
    .catch(err => console.error('Error connecting to MongoDB:', err));</p>

<p>// 定义 Schema 和 Model
const userSchema = new mongoose.Schema({
    name: String,
    age: Number
});</p>

<p>const User = mongoose.model('User', userSchema);</p>

<p>// 查询数据库中的数据
async function getUsers() {
    try {
        const users = await User.find();  // 查询所有用户
        console.log('Users:', users);
    } catch (error) {
        console.error('Error fetching users:', error);
    }
}</p>

<p>getUsers();</p>

<p>// 关闭数据库连接
function closeConnection() {
    mongoose.connection.close(() => {
        console.log('Mongoose default connection disconnected');
    });
}</p>

<p>process.on('SIGINT', closeConnection);  // 监听程序退出事件

解释

  • mongoose.connect():连接到MongoDB数据库。
  • mongoose.Schema:定义数据结构。
  • mongoose.model():创建模型。
  • User.find():查询数据库中的数据。
  • mongoose.connection.close():关闭数据库连接。

方法三:使用 knex 模块作为 SQL 查询构建器

步骤 1:安装 knex 模块和相应的数据库驱动

确保你已经安装了knex模块以及相应的数据库驱动(例如pg用于PostgreSQL)。如果没有,请运行以下命令:
bash
npm install knex pg

步骤 2:编写代码连接数据库

下面是一个完整的代码示例,展示如何使用knex模块连接到PostgreSQL数据库并执行查询操作。

javascript
// 引入 knex 模块
const knex = require('knex')({
    client: 'pg',  // 数据库类型,这里以 PostgreSQL 为例
    connection: {
        host: 'localhost',
        user: 'postgres',
        password: 'password',
        database: 'test_db'
    }
});</p>

<p>// 执行查询
knex.select('*').from('users')  // 假设有一个 users 表
    .then(rows => {
        console.log('Query Results:', rows);
    })
    .catch(error => {
        console.error('Error executing query:', error);
    })
    .finally(() => {
        // 关闭数据库连接
        knex.destroy().then(() => {
            console.log('Connection closed.');
        });
    });

解释

  • knex():初始化一个Knex实例。
  • knex.select().from():构建SQL查询。
  • knex.destroy():关闭数据库连接。

三种在Node.js中连接和操作数据库的方法:
1. 使用mysql模块:适合MySQL数据库,简单易用。
2. 使用mongoose模块:适合MongoDB数据库,提供了强大的Schema和Model功能。
3. 使用knex模块:作为一个SQL查询构建器,支持多种数据库类型,灵活性高。

根据你的具体需求选择合适的方法即可!

(牛站网络)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关