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

Alexa技能:MySQL查询结果存变量显示[Object Object]求助

解决Alexa Skill中MySQL查询返回[Object Object]的问题

嘿,我一眼就看出问题出在哪了——你踩了异步操作的坑!咱们一步步拆解和修复:

问题根源

  1. connection.query()是异步方法,它的返回值并不是查询结果,而是一个Query对象(也就是你看到的[Object Object])。你现在的代码直接把这个对象赋值给stat,然后立刻返回响应,这时候查询甚至还没执行完呢!
  2. 你提前调用了connection.end(),这会在查询完成前就断开数据库连接,大概率会导致查询失败。

修复方案

我们需要把异步的数据库查询用Promise封装,然后用async/await来等待结果,这样就能确保拿到真实的查询结果再构建Alexa的响应。

修改后的完整代码如下:

canHandle(handlerInput) { 
  return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' && 
         Alexa.getIntentName(handlerInput.requestEnvelope) === 'buscaIntent'; 
}, 
async handle(handlerInput) { // 改成async函数
  const mysql = require('mysql'); 
  const connection = mysql.createConnection ({ 
    host: 'remotemysql.com', 
    user: 'RBb34534sd', 
    password: 'xxxxxxxxx', 
    database: 'RBsdfewrg' 
  }); 

  // 用Promise封装query操作,方便await
  const queryPromise = new Promise((resolve, reject) => {
    connection.query(
      'SELECT `spe` FROM `prueba` WHERE `nombre` LIKE "raichu" limit 1', 
      (err, result, fields) => {
        if (err) {
          reject(err); // 出错时拒绝Promise
        } else {
          resolve(result); // 成功时返回结果
        }
      }
    );
  });

  try {
    const result = await queryPromise; // 等待查询完成拿到结果
    const stat = result[0]?.spe; // 取出spe字段,可选链避免空值报错
    connection.end(); // 查询完成后再关闭连接

    return handlerInput.responseBuilder 
      .speak("Busc " + (stat || "未找到相关数据")) // 处理可能的空值
      .reprompt("reprompt buscar") 
      .getResponse(); 
  } catch (err) {
    connection.end(); // 出错也要关闭连接
    console.error(err);
    return handlerInput.responseBuilder 
      .speak("查询时出现错误,请稍后再试") 
      .getResponse(); 
  }
} 

关键改进点

  • 将handle声明为async函数,这样就能在内部使用await等待异步操作完成
  • 把connection.query包装成Promise,让异步操作可以被await
  • 等待查询结果返回后,才提取spe字段、关闭连接并构建响应
  • 增加了错误处理,避免查询出错时Skill崩溃
  • 用result[0]?.spe的可选链语法,防止查询结果为空时出现Cannot read property 'spe' of undefined的错误

这样修改后,你就能拿到真实的spe字段值,而不是那个[Object Object]的Query对象啦!

内容的提问来源于stack exchange,提问作者P R R S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:04:49