javascript - 从函数中导出数据 [mysql, node.js, discord.js]
问题描述
我在从函数导出数据时遇到了这样的问题。我不知道它是否可以完成,但我在这里看不到任何其他解决方案。我的问题是我正在导出一个函数,我想导出这个函数的结果,所以在这种情况下我有 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
解决方案
您可以使用回调函数,在该函数中您可以根据需要使用数据。通过将函数作为参数传递给函数,您可以使用从数据库中获取的数据作为参数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);
});
试一试,看看效果如何
推荐阅读
- database - 如何重试 Elasticsearch 分片分配,未分配分片
- android - 滚动查看可点击
- linux - 如何在 linux 上安装 i386 gcc 交叉编译器
- sql - Bigquery - 返回具有结构特定字段的结构数组
- node.js - Forge-Application BIM 360 查看器下拉选择项目
- django - Django - Query_set 在测试中运行时返回一个空数组列表
- amazon-web-services - S3 VPC 端点 IAM 中断对 ECR 的访问
- python - TypeError:“模块”对象不可调用 perlin_noise 错误
- python - 使用 Facebook python SDK 下载发票
- javascript - 在 Firefox 中,当窗口最小化或集中在另一个选项卡上时,websockets 会发生什么?