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

如何通过JSON.stringify传多值?PostgreSQL IN查询仅返回单条结果问题

问题分析与解决方案

核心问题

你请求里的(6,62,63)在JavaScript中是逗号运算符,它会返回最后一个表达式的值,也就是63。所以服务器实际只收到了UserIdList=63,自然只返回对应的数据。

修正步骤

1. 修正前端请求参数格式

把(6,62,63)改成数组格式[6,62,63],这样才能正确传递多个ID:

const requestDataSql = JSON.stringify({
    "ApiVersion": 1.1,
    "ApiKey": "ApiKey",
    "Name": "GetNameMultiple",
    "Params": {
        "UserIdList": [6,62,63] // 改成数组格式
    }
});

2. 适配服务器端SQL处理逻辑

如果服务器端支持直接绑定数组参数,建议把SQL里的IN替换为PostgreSQL更适合数组的= ANY语法:

SELECT a."UserId",
       a."Name"
FROM public."Users" AS a
WHERE a."UserId" = ANY (@UserIdList) -- 替换IN为= ANY
ORDER BY a."UserId";

如果服务器端仅支持接收逗号分隔的字符串参数,前端需要把数组转为字符串:

"UserIdList": "6,62,63"

同时SQL要调整为解析字符串数组的写法:

SELECT a."UserId",
       a."Name"
FROM public."Users" AS a
WHERE a."UserId" IN (string_to_array(@UserIdList, ',')::int[])
ORDER BY a."UserId";

验证建议

  • 先在浏览器控制台打印requestDataSql,确认JSON里的UserIdList格式正确
  • 查看服务器端日志,确认收到的参数值是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:18:19