如何在REST API中使用查阅项的值作为过滤条件

原文地址:点击打开链接

这是要解决的问题:在使用REST API的时候,对于lookup类型的列,不能使用它的值来过滤item。

原因其实很简单,使用REST API获取的值是id,而不是我们想得到的字符串。

下面举个例子:你有两个列表

(1)Companies

(2)Exployees

Employees列表有一个Employer列,是一个lookup列,在Companies列表中取值。如果你使用REST API获取一条Employees列表中的item的数据,会得到如下结果:(注意xml中有一个EmployerId节点,却没有Employer节点)


“EmployerId”节点其实包含的值是Employer所lookup的item的Id,这个item在Companies列表中,其Id为1。如果你想使用这一列作为过滤条件,就必须使用OData操作符“$expand”。因此如果需要在Employees列表中,过滤出来所有为ID是1的company工作的员工,应该使用如下代码:

http://[...]/_api/web/lists/getbytitle('Employees')/Items/
?$select=Title,Employer/Id
&$expand=Employer/Id
&$filter=Employer/Id eq 1


如果是SharePoint user该怎样处理呢?我们知道一个SharePoint用户本质上也是一个lookup类型的field,所用的用户都是保存在User Information List中的,所以当使用用户作为过滤条件时,与上面的做法一致。


如果是元数据(Managed Metadata)该怎样处理呢? 一个metadata field本质上也是一个lookup类型的field,源数据列表是一个隐藏列表“TaxonomyHiddenList”中。我的测试列表中的一个metadata类型的field的名字为“Relevant Office”,使用REST API获取到的值为:


可以看到,在“Label”节点中保存着metadata的值“New York”,在WssId节点中保存着metadata所引用的值的Id,在TernGuid节点中保存着guid。因此我们可以根据这些信息,到“TaxonomyHiddenList”这个隐藏的列表中读取真正的metadata的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值