javascript - 将 SQL 查询添加到 JSON 有效负载
问题描述
我需要以 JSON 格式将 SQL 查询发送到 REST API,它适用于简单查询,但我正在尝试将 WHERE 子句与 IN 运算符一起使用。如果我对值进行硬编码,它可以在 Postman 中工作,但是当我将 Input 数组传递给 IN 运算符时,它似乎没有按预期工作。
var servers = ['Server-1','Server-2'];
var requestBody = {};
requestBody.Script = 'SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN ('+servers+')';
gs.log("Advanced Request3 Body: "+JSON.stringify(requestBody));
这是输出:
{"Script":"SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN (Server-1,Server-2)"}
这是预期的输出:如果传递数组有任何问题,任何人都可以提供帮助。
{"Script":"SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN ('Server-1','Server-2')"}
解决方案
您可以使用以下命令转义数组中每个元素的单引号Array.map
:
var serversEscaped = servers.map(function(el) { return '\'' + el + '\''; });
然后用Array.join
逗号生成一个字符串:
var query = serversEscaped.join(', ');
这是您的整个代码的样子:
var servers = ['Server-1','Server-2'];
var requestBody = {};
var serversEscaped = servers.map(function(el) { return '\'' + el + '\''; });
var query = serversEscaped.join(', ');
requestBody.Script = 'SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN ('+ query +');'
console.log(JSON.stringify(requestBody));
推荐阅读
- docker - 为什么 nginx 没有在 Windows Server 2019 docker 容器中启动?
- javascript - jQuery Ajax 多次提交表单
- flutter - 将 Row 固定到其他 UI 小部件顶部的 Scroll View 底部
- ruby - 在运行时将类添加到 ruby 模块
- typescript - 使用 ReturnType<> 时如何使属性可选
- google-maps - 如何使用矩形或多边形从给定区域的谷歌地图获取街道总数
- javascript - 移动 safari 过度滚动突然跳跃
- jquery - 无法在 jQuery 中删除“.sideicon”
- c++ - 未定义对“HashTable::HashTable()”的引用
- python - Python中的strptime方法是方法中的方法吗?