从函数中导出数据 [mysql, node.js, discord.js]

Posted

技术标签:

【中文标题】从函数中导出数据 [mysql, node.js, discord.js]【英文标题】:Exporting data from the function [mysql, node.js, discord.js] 【发布时间】:2021-08-14 14:05:07 【问题描述】:

我在从函数中导出数据时遇到了这样的问题。我不知道它是否可以完成,但我在这里看不到任何其他解决方案。我的问题是我正在导出一个函数,我想导出这个函数的结果,所以在这种情况下我有 mysql。我无法将rows 添加到module.exports = sql, rows,因为我收到一条消息,指出rows 未定义。我正在寻求帮助或其他解决方案。

//------------------------------
???? index.js
//------------------------------

const mysql = require('mysql')
const db = require('./database')

var con = mysql.createConnection(
        host: db.host,
        user: db.user,
        password: db.password,
        database: db.database
)

con.connect(err => 
        if(err) console.log(err)
)

function sql(sql)
        con.query(sql, (err, rows) => 
            if(err) console.log(err)

        )


module.exports =  sql, rows 

// con.end()

//------------------------------
???? Command file
//------------------------------

const sql = require('./../config/test')

sql.sql("SELECT * FROM `servers`")
console.log(sql.rows)

//------------------------------
???? Console error
//------------------------------
(node:30132) UnhandledPromiseRejectionWarning: ReferenceError: rows is not defined

【问题讨论】:

【参考方案1】:

您可以使用Callback function,您可以在其中以您想要的方式使用数据。通过将函数作为参数传递给sql 函数,您可以使用从数据库中获取的rows 作为参数调用该回调函数。

看看我为你编辑的代码:

你的 index.js

/* Skipped all code above that isn't important for this example */

function sql(query, callback)
    con.query(query, (err, rows) => 
        if(err) console.log(err);

        callback(rows);
    );


module.exports = sql

你的命令文件

const queryHandler = require('./../config/test');

// Call the sql function and pass a callback as the 2nd parameter
queryHandler.sql("SELECT * FROM `servers`", (rows) => 
    // Do whatever you want with the rows
    console.log(rows);
);

试一试看看效果如何

【讨论】:

以上是关于从函数中导出数据 [mysql, node.js, discord.js]的主要内容,如果未能解决你的问题,请参考以下文章

Node.js mysql在函数外导入查询结果[重复]

是否可以在也具有 IPC 挂钩的 node.js 文件中导出类?

node.js 中 module.exports= 函数的含义

使用 Node.js 从 AWS Lambda 函数连接到 MySql 数据库,没有连接回调

如何从 MySQL 数据库中的表的列中导出 .txt 文件?

怎样在MySQL数据库中导出整个数据库