javascript - JS 无法查询 MySQL 数据库。错误:connection.query 不是函数
问题描述
试图查询我的 mySQL 数据库,但我不能,因为我得到一个TypeError: connection.query is not a function
错误。有谁知道为什么?我不知道为什么会这样。
数据库.js
const fs = require('fs'); // node.js file system module
require('dotenv').config(); // stores tokens, keys, passwords and other info
const Discord = require('discord.js'); // links discord.js api to file
const database = require('./database.js');
const client = new Discord.Client(); // creates bot user
let connection;
(async () => {
connection = await require('./database.js');
await client.login(process.env.TOKEN); // bot goes from offline to online
})();
client.once('ready', () => console.info(`[${date.toLocaleString()}] INFO | Ready, logged in as ${client.user.tag} (${client.user.id})\n------------------------`));
client.on('guildCreate', async guild => {
try {
await connection.query(`INSERT INTO guildInfo VALUES('${guild.id}', '${guild.ownerID}')`);
await connection.query(`INSERT INTO guildConfig (guildID) VALUES('${guild.id}')`);
} catch(err) {
console.error(err);
}
});
数据库.js
require('dotenv').config();
const mysql = require('mysql2/promise');
date = new Date();
mysql.createConnection({
user: process.env.USER,
password: process.env.PASSWORD,
database: process.env.DATABASE
}).then(connection => console.info(`[${date.toLocaleString()}] INFO | Waiting for input/changes to code\n------------------------`)).catch(err => console.error(err));
错误
TypeError: connection.query is not a function
at Client.<anonymous> (C:\Users\Patrick Lawrence\Desktop\Synth\index.js:43:20)
at Client.emit (events.js:315:20)
at Object.module.exports [as GUILD_CREATE] (C:\Users\Patrick Lawrence\Desktop\Synth\node_modules\discord.js\src\client\websocket\handlers\GUILD_CREATE.js:33:14)
at WebSocketManager.handlePacket (C:\Users\Patrick Lawrence\Desktop\Synth\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\Patrick Lawrence\Desktop\Synth\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\Patrick Lawrence\Desktop\Synth\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\Patrick Lawrence\Desktop\Synth\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\Patrick Lawrence\Desktop\Synth\node_modules\ws\lib\websocket.js:797:20)
at Receiver.emit (events.js:315:20)
解决方案
只需您不将连接导出到database.js
.
创建连接后,将其分配给一个变量,例如const connection
并在文件底部键入module.exports = connection
。
推荐阅读
- sonos - Sonos Control API:调整扬声器组中的 Sub
- typescript - 在javascript中实现一个具有继承的类
- reactjs - ReactJSA Typescript Route JSX 元素不接受
- java - Spring Boot - application.yml,从文件中读取值
- r - plot_ly 删除 r 中的某些行后重新投影 shapefile
- xpath - 如何在 XPath 中提取属性节点的某个值?
- snowflake-cloud-data-platform - 如何在雪花中连接数值和字符串值?
- keycloak - 将 google 身份验证与密钥 cloack 集成
- postgresql - 如何在没有 JSON 处理函数的情况下在 WHERE 中编写 jsonb
- python - Python shutil.copy 导致 PyQt GUI 冻结