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

TypeScript中获取EXISTS查询返回结果的问题

解决TypeScript中提取EXISTS查询结果的问题

问题根源

你的EXISTS查询返回的对象键是完整的SQL语句字符串,导致无法通过简洁的属性名直接获取0或1的结果值。

解决方案

方法1:给查询结果加别名(推荐)

修改SQL语句,给EXISTS的结果指定固定别名,让返回对象的键变成你定义的简洁名称,方便直接访问:

const rslt1 = query(`SELECT EXISTS(SELECT * FROM patients WHERE cc=?) AS exists_flag`, [params.ccInput]);
const rslt2 = query(`SELECT EXISTS(SELECT * FROM doctors WHERE specialty=?) AS exists_flag`, [params.specialtyInput]);

(async () => {
    // 提取数组第一个结果对象,直接访问别名属性
    const frslt1 = await rslt1;
    const patientExists = frslt1[0].exists_flag; // 得到0或1
    console.log(patientExists);

    const frslt2 = await rslt2;
    const doctorExists = frslt2[0].exists_flag;
    console.log(doctorExists);

    // 后续条件判断示例
    if (patientExists) {
        // 患者存在时的逻辑
    } else {
        // 患者不存在时的逻辑
    }
})();

方法2:直接提取对象值(无需修改SQL)

如果不想改动SQL,可以通过Object.values获取结果对象的所有值,再取第一个元素:

(async () => {
    const frslt1 = await rslt1;
    const patientExists = Object.values(frslt1[0])[0]; // 得到0或1

    const frslt2 = await rslt2;
    const doctorExists = Object.values(frslt2[0])[0];
})();

TypeScript类型优化

为避免类型报错,可以定义简单类型或使用类型断言:

// 定义类型
type ExistsResult = {
    exists_flag: number;
};

// 使用类型断言获取值
const patientExists = (frslt1[0] as ExistsResult).exists_flag;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:02:28