在带有REST API的SPFx中使用$ filter = substringof()时出错

时间:2019-09-23 14:44:29

标签: api odata sharepoint-online spfx sharepointframework

我对SharePoint SPFx和Rest API比较陌生。我正在尝试使用Rest API从SharePoint联机列表中选择一个项目。需要选中此项目,并检查属性是否包含字符串。此属性是一个URL,字符串将是一个必须包含在url中的特定单词。此数据将在SharePoint Online的自定义Web部件中使用。这是我当前正在使用的API:https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$filter=substringof({string: word},{property: url})

当我尝试在工作台({tenant} / _ layouts / 15 / workbench.aspx)中运行自定义Web部件时,Web部件正确加载,但是API调用出现以下错误: 代码:“-1,Microsoft.SharePoint.SPException” 消息:“不支持函数运算符substringof或使用无效。”

我猜我的语法不正确,但是我似乎无法弄清楚我在做什么错。

我已尝试按照我在互联网上找到的示例更改API。我已经尝试过的这些变体: //切换字符串和属性的位置

  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$filter=substringof({property},{string})

///在末尾添加eq真

  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$filter=substringof({string},{property}) __eq true__

  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$filter=substringof({property},{string}) __eq true__

///使用$ substringof()代替$ filter = substringof()

  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$ __substringof__({property},{string})
  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$ __substringof__({string},{property})

///使用$ filter = contains()代替$ filter = substringof()

  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$filter=__contains__({property},{string})
  • https://{tenant}/_api/web/lists/GetByTitle('{listname}')/items?$select={properties}&$filter=__contains__({string},{property})

当我在浏览器中检查它时,第一个API起作用,并且它返回具有选定属性的预期项目。因此,我猜测它与我在工作台/ SharePoint Online中使用它有关。

这是在浏览器中使用第一个API时获得的XML:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
      xmlns:georss="http://www.georss.org/georss" 
      xmlns:gml="http://www.opengis.net/gml" 
      xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
      xml:base="https://{tentant}/_api/">
   <id>{guid}</id>
   <title />
   <updated>2019-09-23T09:51:02Z</updated>
   <entry m:etag="&quot;26&quot;">
      <id>{guid}</id>
      <category term="SP.Data.CustomersListItem" 
       scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
      <link rel="edit" 
       href="Web/Lists(guid'a8c98000-4c6a-43ed-b09a-ba95eb43b15f')/Items(53)" />
      <title />
      <updated>2019-09-23T09:51:02Z</updated>
      <author>
         <name />
      </author>
      <content type="application/xml">
         <m:properties>
           {the requested properties in the select}
         </m:properties>
      </content>
   </entry>
</feed>

我想获得相同的XML输出,以便可以使用属性填充自定义Web部件中的字段。但是很明显我做错了。 SharePoint Online不支持substringof()或contains()吗? 我有语法错误吗?换句话说:我该如何工作?

0 个答案:

没有答案