如何用Angular HTTP GET获取SharePoint列表创建人、修改人值
问题原因
SharePoint REST API 查询列表项时,用户类型、查找类型的关联字段不会默认随列表项结果返回,仅在$select中声明字段名无法获取完整字段值;另外需要区分系统内置的创建/修改人字段和自定义同名字段:系统内置创建人、修改人字段的内部名称为Author、Editor,和自定义的无内部空格的CreatedBy、ModifiedBy字段是互相独立的字段。
修复方案
根据你要查询的字段类型,给请求补充$expand参数展开关联的用户信息即可:
- 如果要查询的是自定义创建的
CreatedBy、ModifiedBy用户字段,将请求修改为如下形式:
this.http.get( this.baseurl + "_api/web/lists/getByTitle('mylist')/items?$select=ID,Created,CreatedBy,Modified,ModifiedBy,CreatedBy/Title,CreatedBy/EMail,ModifiedBy/Title,ModifiedBy/EMail&$expand=CreatedBy,ModifiedBy", { headers: { Accept: 'application/json;odata=verbose' } } );
- 如果实际要取的是SharePoint列表默认自带的创建人、修改人字段,不要使用
CreatedBy、ModifiedBy作为查询字段名,替换为系统字段的内部名Author、Editor,对应请求如下:
this.http.get( this.baseurl + "_api/web/lists/getByTitle('mylist')/items?$select=ID,Created,Author,Modified,Editor,Author/Title,Author/EMail,Editor/Title,Editor/EMail&$expand=Author,Editor", { headers: { Accept: 'application/json;odata=verbose' } } );
注意事项
$expand参数必须明确指定要展开的用户/查找字段名,否则返回结果中只会返回关联项的ID,甚至直接缺失字段值- 如果需要获取用户的具体属性(比如显示名、邮箱、登录账号),需要在
$select中以字段名/属性名的格式声明,常用的用户属性包括Title(显示名)、EMail(邮箱)、LoginName(登录账号)
内容的提问来源于stack exchange,提问作者Black Panther
相关产品推荐
相关产品推荐

