【问题标题】:SharePoint Online - SPFx - How to use GroupBy in PnPjsSharePoint Online - SPFx - 如何在 PnPjs 中使用 GroupBy
【发布时间】:2021-06-10 11:37:05
【问题描述】:

我是 SPFx PnPjs 的新手。我想在查询中使用 GroupBy 但在可视代码中看不到智能感知。这是我的查询:

var query = pnp.sp.web.lists.getByTitle("Employee").items.select("ID,Title").filter(filterstring).get();

我想要类似的输出:

var query = pnp.sp.web.lists.getByTitle("Employee").items.GroupBy("Title").select("ID,Title").filter(filterstring).get();

有什么建议可以在上面的查询中使用“GroupBy”吗?

【问题讨论】:

    标签: jquery sharepoint-2013 sharepoint-online spfx pnp-js


    【解决方案1】:

    在pnp js中无法使用GroupBy,因为它不存在。

    但是,你可以在 javascript 中获取数据后对数据进行分组。

    例如,您有一些接口来存储结果数据,如下所示:

    interface IData{
      Id: number;
      Title: string;
    }
    
    interface IGroups{
        Title: string;
        Ids: number[];
    }
    

    在获得请求响应后,创建对象数组

    let result: IData[] = [];
    
    query.then((items)=>{
        items.map((item)=>{
          result.push({Id: item.ID, Title: item.Title});
        });
    });
    

    在此之后,您将获得未分组的数据,您可以通过过滤对其进行分组:

    let groups: IGroups[] = [];
    result.map((item)=>{
       //get only titles for grouping
       return item.title;
    }).filter((value, index, self)=>{
        //get unique values
        return self.indexOf(value)===index
    }).map((item)=>{
        //Here you get distinct title - you groups
        //and creating groups
        groups.push({
            Title: item,
            Ids: result.filter((r)=>{return r.title === item})
        });
    });
    

    【讨论】:

      【解决方案2】:

      SharePoint Rest API 不支持GroupBy,您可以获得所有支持的 OData 查询操作here

      PNP js 是对 Sharepoint Rest API 的封装,所以目前还不支持 group。

      作为一种解决方法,您可以在返回值中过滤掉所需的项目。Array.prototype.filter()

      【讨论】:

        猜你喜欢
        • 2020-06-25
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 2019-02-06
        • 2021-10-23
        • 2022-09-24
        • 2020-01-13
        • 2021-03-17
        相关资源
        最近更新 更多