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

使用module.exports返回结果为文本形式的技术问题求助

问题解决步骤

你的代码存在三个核心问题,导致返回结果显示为函数文本而非实际数据:

1. 未执行函数,直接引用函数本身

在profile.js中,你直接使用dbProfile.profileInfo,这是对函数的引用而非执行,所以会输出函数的文本形式。需要改为调用函数dbProfile.profileInfo(),同时因为操作是异步的,要加await。

2. 异步数据库查询无法通过直接return获取结果

dbStart.js中的users函数使用了回调式的异步查询,回调函数里的return result不会作为users函数的返回值,必须用Promise包装异步操作才能用async/await获取结果。

3. 数据库查询结果未处理

查询返回的是对象数组,直接显示会输出数组的文本形式,需要提取其中的ExarID字段进行格式化。

修正后的代码:

dbStart.js

exports.users = async function () {
  return new Promise((resolve, reject) => {
    conn.query("SELECT ExarID FROM users", function (err, result, fields) {
      if (err) {
        console.log(err);
        reject(err);
        return;
      }
      console.log(result);
      resolve(result);
    });
  });
};

dbProfile.js

const db = require("./dbStart");

module.exports = {
  profileInfo: async function () {
    const userData = await db.users();
    // 提取所有ExarID并拼接成字符串,可根据需求调整格式
    return userData.map(item => item.ExarID).join(', ');
  },
};

profile.js

const dbProfile = require("./dbProfile");

async function User(interaction) {
  const exarIds = await dbProfile.profileInfo();
  const embed = new EmbedBuilder()
    .setColor(0x0099ff)
    .setTitle("user profile ")
    .setURL("https://www.youtube.com/watch?v=dQw4w9WgXcQ") // 修正URL重复的https://
    .setDescription(`ExarID: ${exarIds}`);
  await interaction.reply({
    ephemeral: true,
    embeds: [embed],
    fetchReply: true,
  });
  return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:36:26