首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceNow编码查询验证

ServiceNow编码查询验证
EN

Stack Overflow用户
提问于 2013-09-05 10:38:39
回答 4查看 3.3K关注 0票数 1

我打算让用户在编码查询 SOAP请求中指定ServiceNow。

问题是,如果用户指定无效的查询字符串(例如"?#@“或"sometext"),则ServiceNow不会返回任何异常,而是返回每一行或根本不返回行。

是否有方法通过webservice检查编码查询的有效性?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-04 21:33:46

范迪奇

如果提前知道SOAP查询将针对哪个表运行(或者在用户提交查询时可以从用户那里获得该信息),您可以专门设置自己的web服务来检查查询字符串的有效性。

GlideRecord有用于输入编码查询的"addedEncodedQuery“方法,还有一个用于将当前查询转换为编码字符串的getEncodedQuery。如果实例化一个GlideRecord对象,并传递一个无效的查询字符串,如下所示:

代码语言:javascript
复制
var myGR = new GlideRecord('incident');
    myGr.addEncodedQuery('invalid_field_foo=BAR');

然后,您可以调用getEncodedQuery来查看它是否有效:

代码语言:javascript
复制
var actual_query = myGR.getEncodedQuery(); //sys_idNotValidnull

您不应该在输入和输出之间做简单的比较,因为API并不保证一个有效的查询将作为与输入完全相同的字符串返回。最好简单地验证actual_query不等于'sys_idNotValidnull‘。

票数 5
EN

Stack Overflow用户

发布于 2016-08-28 22:30:52

我总是建议启用系统属性“”以避免这种影响。物业就像它说的那样。我从来不明白为什么要为无效的查询返回所有行。我见过很多情况,开发人员有查询缺陷,而且自从行回来后就不知道了。

票数 2
EN

Stack Overflow用户

发布于 2018-01-22 09:59:41

您可以使用下面的代码,这样查询只有在其正确时才会返回结果。

代码语言:javascript
复制
gs.getSession().setStrictQuery(boolean);

这将重写系统属性值:

代码语言:javascript
复制
glide.invalid_query.returns_no_rows

参考资料:AvailableSystemProperties.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18634101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档