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

Express中用Tedious查询SQL Server,返回1行但recordset属性undefined?

问题排查:result.recordset[0].username 返回 undefined

环境配置

  • Tedious驱动
  • SQL Server身份验证
  • SQL Server 2022 Express
  • trustServerCertificate = true
  • encrypt = false

相关代码

测试函数

export async function testFunc(): Promise<SQLUser | null > {
  try {
    const pool = await connect();
    const request = pool.request();
    const result = await request.query<SQLUser>("select 'blah222' ")
  } catch (e) {
    console.log(e)
  }
}

SQLUser 接口定义 (SQLUser.model.ts)

export interface SQLUser {
  username: string;
}

问题描述

执行上述代码后,rowsAffected = 1,但打印result.recordset[0].username时显示undefined。

原因及解决方法

问题出在SELECT语句未给查询结果的列指定与SQLUser接口匹配的名称。当前语句select 'blah222'执行后,SQL Server会返回一个无明确名称的列(或默认标识如(No column name)),而你的SQLUser接口期望的是名为username的属性,两者无法匹配,导致无法正确映射值。

只需修改SELECT语句,为列添加别名使其与接口属性名一致:

const result = await request.query<SQLUser>("select 'blah222' as username ")

这样查询返回的列名就是username,与SQLUser接口的属性对应,就能正常获取到result.recordset[0].username的值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.10 07:12:32