Nodejs node-mysql取出的数据如何封装

Nodejs node-mysql取出的数据如何封装

我用node-mysql模块取得mysql数据库里的数据如下,如何解析成如jdbc那样result,哪位高手知道有现成的模块可以解析读取此格式数据 [ { Host: ‘localhost’, User: ‘root’, Password: ‘*BB867A63E172242BD41047265EA2AF5DC7D8518F’, Select_priv: ‘Y’, Insert_priv: ‘Y’, Update_priv: ‘Y’, Delete_priv: ‘Y’, Create_priv: ‘Y’, Drop_priv: ‘Y’, Reload_priv: ‘Y’, Shutdown_priv: ‘Y’, Process_priv: ‘Y’, File_priv: ‘Y’, Grant_priv: ‘Y’, References_priv: ‘Y’, Index_priv: ‘Y’, Alter_priv: ‘Y’, Show_db_priv: ‘Y’, Super_priv: ‘Y’, Create_tmp_table_priv: ‘Y’, Lock_tables_priv: ‘Y’, Execute_priv: ‘Y’, Repl_slave_priv: ‘Y’, Repl_client_priv: ‘Y’, Create_view_priv: ‘Y’, Show_view_priv: ‘Y’, Create_routine_priv: ‘Y’, Alter_routine_priv: ‘Y’, Create_user_priv: ‘Y’, Event_priv: ‘Y’, Trigger_priv: ‘Y’, ssl_type: ‘’, ssl_cipher: <Buffer >, x509_issuer: <Buffer >, x509_subject: <Buffer >, max_questions: 0, max_updates: 0, max_connections: 0, max_user_connections: 0 }, 。。。。。。


4 回复

Node.js node-mysql 取出的数据如何封装

在使用 node-mysql 模块从 MySQL 数据库中获取数据时,有时需要将这些数据进行封装以便更好地管理和操作。以下是一个简单的示例,展示如何将从数据库中取出的数据进行封装,并提供一些常用的访问方法。

示例代码

首先,确保你已经安装了 node-mysql 模块:

npm install mysql

然后,你可以创建一个简单的封装类来处理数据:

const mysql = require('mysql');

// 创建数据库连接池
const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: 'yourpassword',
    database: 'yourdatabase'
});

class UserPrivileges {
    constructor(data) {
        Object.assign(this, data);
    }

    // 获取所有权限
    getAllPrivileges() {
        return this;
    }

    // 获取特定权限
    getPrivilege(privilegeName) {
        return this[privilegeName];
    }
}

// 查询数据
pool.query('SELECT * FROM user_privileges', (error, results, fields) => {
    if (error) throw error;

    // 封装查询结果
    const privilegesList = results.map(result => new UserPrivileges(result));

    // 输出封装后的数据
    privilegesList.forEach(privileges => {
        console.log(`Host: ${privileges.Host}`);
        console.log(`All Privileges:`, privileges.getAllPrivileges());
        console.log(`Insert Privilege: ${privileges.getPrivilege('Insert_priv')}`);
    });
});

解释

  1. 创建连接池:我们首先创建了一个数据库连接池,这有助于管理多个数据库连接。
  2. 定义 UserPrivileges:这是一个简单的类,用于封装从数据库中获取的数据。构造函数使用 Object.assign 方法将数据属性赋值给实例。
  3. 添加方法:我们在 UserPrivileges 类中添加了两个方法:
    • getAllPrivileges:返回所有的权限信息。
    • getPrivilege:根据权限名称获取特定的权限值。
  4. 查询数据并封装:我们执行 SQL 查询并遍历结果集,为每个结果创建一个新的 UserPrivileges 实例。这样,我们就可以通过对象的方法来访问和操作数据。

这种方式不仅使数据更易于管理和访问,还提供了更好的封装性,使得代码更加清晰和可维护。


java’s JDBC ? or JSON?


签名: 交流群244728015 《Node.js 服务器框架开发实战》 http://url.cn/Pn07N3

native nodejs node-mysql, 我看可以JSON.stringify(rows)显示出来

在使用 node-mysql 模块从 MySQL 数据库中获取数据时,通常返回的数据格式是 JSON 对象数组。你可以直接对这些对象进行操作,不需要额外的解析模块。

如果你希望将这些数据封装成更便于使用的格式或结构,可以根据具体需求进行封装。下面是一个简单的示例代码,展示如何从 node-mysql 查询结果中提取和封装数据:

示例代码

假设我们有一个名为 users 的表,并且我们想要查询该表中的所有用户并封装其信息:

const mysql = require('mysql');

// 创建连接池
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'your_password',
  database: 'your_database'
});

function getUserData(callback) {
  // 执行查询
  pool.query('SELECT * FROM users', (error, results) => {
    if (error) {
      return callback(error);
    }

    // 封装数据
    const formattedResults = results.map(result => ({
      id: result.id,
      name: result.name,
      email: result.email
    }));

    callback(null, formattedResults);
  });
}

// 使用封装的数据
getUserData((err, data) => {
  if (err) {
    console.error(err);
  } else {
    console.log(data); // 输出封装后的数据
  }
});

解释

  1. 创建连接池:首先,我们使用 mysql.createPool 方法创建一个连接池。
  2. 执行查询:定义一个 getUserData 函数来执行 SQL 查询。
  3. 封装数据:在查询成功后,使用 results.map 方法将查询结果映射到一个新的数组中,每个元素包含你需要的信息(例如 id, name, email)。
  4. 回调函数:最后,通过回调函数返回封装后的数据或错误信息。

这种方法可以让你灵活地根据需要定制数据结构,使得后续处理更加方便。如果你需要进一步的封装,可以根据业务需求调整封装逻辑。

回到顶部