在不存在的字段上进行OData查询会导致错误的请求吗?

时间:2019-02-14 16:36:22

标签: rest odata project-server

我正在尝试查询MS Project Server以检索某些任务,并在本地自定义字段上进行了部分过滤。我的查询如下:

http://server/site/_api/ProjectServer/Projects('project guid')/Tasks?$filter=BaselineFinish gt datetime'0001-01-01T00:00:00' and BaselineFinish le datetime'2018-12-31T22:00:00' and IsMilestone eq false and IsSummary eq false and LocalCustom_x005f_Published_x005f_c9c0419bca2be911b47034f39a71aba5_x005f_000039b78bbe4ceb82c4fa8c0b40014e eq 'My Term'&$top=500&$skip=0

我尝试了一下,但收到了400个错误的请求。但是,在为本地自定义字段添加过滤器之前,此查询工作正常:

http://server/site/_api/ProjectServer/Projects('project guid')/Tasks?$filter=BaselineFinish gt datetime'0001-01-01T00:00:00' and BaselineFinish le datetime'2018-12-31T22:00:00' and IsMilestone eq false and IsSummary eq false&$top=500&$skip=0

因此,唯一的区别是为本地自定义字段添加了过滤器。而且我知道,如果从未向本地自定义字段分配值,那么服务器中的任务对象实际上将不存在该值。

意思是,如果我查询一堆任务,并且如果返回的任务之一没有设置Text 28字段,那么

LocalCustom_x005f_Published_x005f_c9c0419bca2be911b47034f39a71aba5_x005f_000039b78bbe4ceb82c4fa8c0b40014e

属性将不会出现在该特定任务对象上。如果在另一个任务上设置了“文本28”字段,则将显示该属性

因此,考虑到我知道某些任务可能不存在该字段,这使我想知道是否某些任务上缺少该字段是什么导致我的查询返回错误请求?还是我应该在那里看看其他东西?

0 个答案:

没有答案