Softlayer:SoftLayer_Account :: getAllBillingItems。当我通过" parentId"时获取空数组[] as null

时间:2017-03-07 11:53:22

标签: ibm-cloud-infrastructure

使用 SoftLayer_Account :: getAllBillingItems 传递过滤器,我将获得包含所有子项的所有项目。但我只想要父项,所以我在过滤器中将parentId包含为null,并且我得到一个空数组。当我通过特定的 ParentId 时,我能够获得物品。

https://Username:API_KEY@api.softlayer.com/rest/v3/SoftLayer_Account/getAllBillingItems.json?objectFilter={"allBillingItems":{"nextBillDate": {"operation": "betweenDate","options":[{"name": "startDate","value": ["03/07/2017"]},{"name": "endDate","value": ["03/20/2017"]}]},"parentId": {"operation":  null}}}&objectMask=category;location;associatedChildren;associatedChildren.category

我尝试传递为空但没有输出。 有人能帮我吗?使用parentId获取所有项目的操作是什么?

1 个答案:

答案 0 :(得分:0)

根据文档,您需要使用“is null”而不是“null”,请参阅https://sldn.softlayer.com/article/object-filters

我注意到您正在尝试与子女一起获取父帐单项目,我更新了对象掩码以减少检索到的数据,考虑到如果您处理大量数据可能会出错。查看how-solve-error-fetching-http-headers。您可以使用以下任何掩码:

objectMask=mask[id,parentId,category,location,associatedChildren.category]

objectMask=id;parentId;category;location;associatedChildren.category

但是,如果您只想获取父帐单项,除非您需要类别和位置等数据,否则不必使用掩码,在这种情况下您可以使用以下掩码:

objectMask=mask[category,location]

这最后将向您显示父项的信息,包括类别和位置。

您应该能够使用以下REST呼叫向其子女获取父帐单项目。

https://<user_name>:<api_key>@api.softlayer.com/rest/v3/SoftLayer_Account/getAllBillingItems?objectFilter={"allBillingItems":{"nextBillDate":{"operation":"betweenDate","options":[{"name":"startDate","value":["03/07/2017"]},{"name":"endDate","value":["03/20/2017"]}]},"parentId":{"operation": "is null"}}}&objectMask=mask[id,parentId,category,location,associatedChildren.category]

请注意,某些REST客户端不支持字母间的空格。最后,如果您有很多结算项目,我建议使用结果限制功能,以避免超时错误。

参考文献: http://sldn.softlayer.com/article/rest http://sldn.softlayer.com/article/object-Masks https://sldn.softlayer.com/article/object-filters http://sldn.softlayer.com/reference/services/SoftLayer_Billing_Item

我建议你在继续之前阅读文档

此致