You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js等级系统代码无法写入数据库,请求错误排查

Discord.js等级系统数据存储问题

问题描述

我正在基于Discord.js开发等级系统,编写了如下代码用于将用户的经验值数据存入数据库,但数据始终无法成功存储。预期代码能根据用户ID判断,对数据库中的用户经验值进行更新或新增存储,但实际未达到预期效果。

代码片段

client.on('messageCreate', async message => {
  if (message.author.bot) return;

  const userId = message.author.id;
  const username = `${message.author.username}#${message.author.discriminator}`;
  const xpToAdd = 5;

  try {
    const [rows] = await db.promise().query('SELECT * FROM user_levels WHERE userid = ?', [userId]);

    if (rows.length > 0) {
      const newXp = rows[0].xp + xpToAdd;
      await db.promise().query('UPDATE user_levels SET xp = ?, username = ? WHERE userid = ?', [newXp, username, userId]);
    } else {
      await db.promise().query('INSERT INTO user_levels (userid, username, xp) VALUES (?, ?, ?)', [userId, username, xpToAdd]);
    }

  } catch (error) {
    console.error('There was an error processing the message:', error);
  }
});

常见排查方向

  • 确认数据库连接状态:检查db对象是否已正确初始化并建立有效连接
  • 验证表结构:确保user_levels表存在,且userid、username、xp字段类型与代码数据匹配(比如userid需支持字符串存储)
  • 查看详细错误:在catch块中打印error.stack获取更完整的报错信息
  • 测试SQL语句:直接在数据库客户端执行对应的SELECT/UPDATE/INSERT语句,验证是否能正常操作数据
  • 检查异步逻辑:确认db.promise().query确实返回Promise,且await关键字正确使用

内容的提问来源于stack exchange,提问作者Boaz Weerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:07:25