在管理界面中,有一个“表和列”浏览器,该浏览器会忠实地显示表的所有可用列,例如事件表:
我的最终目标是能够查询可插入数据的给定表的所有字段(主要围绕事件和问题表),将其与我拥有的数据进行匹配,然后使用PUT插入记录到桌子上。我遇到的直接问题是,当我按照各种论坛的建议查询sys_dictionary时,只返回了UI显示的列的子集。
邮递员查询:
https://{{SNOW_INSTANCE}}.service-now.com/api/now/table/sys_dictionary?sysparm_fields=internal_type,sys_name,name,read_only,max_length,active,mandatory,comments,sys_created_by,element&name={{TableName}}&sysparm_display_value=all
我了解精简结果集与它们是表中的实列以及与其他表的链接有关,但我找不到任何文档描述如何使用REST api获取UI具有的结果集。
接下来的问题是,我找不到带有示例有效负载的示例,该示例的有效载荷的所有标准字段都已填充到事件表中,因此我可以填充具有其数据的任意多个字段。
答案 0 :(得分:0)
答案 1 :(得分:0)
之所以没有收回所有列,是因为您要查询的表是从另一个表继承的。您需要首先处理所有继承关系,找到所有父表,然后在sys_dictionary中查询所有这些表。
对于事件表,您需要查询sys_db_object
表(所有表的表)以找到parent
,即任务表。然后再次查询sys_db_object
表以查找其parent
,该表为空,因此我们具有所有相关表:incident
和task
。显然,您希望将此代码编写为循环,通过查询列表末尾的表来构建表列表。
拥有此列表后,可以使用查询sys_dictionary
查询sysparm_query=name=incident^ORname=task
,该查询应返回完整的列列表。