如何使用@ PnP / SP从列表中查询列表项和附件?

时间:2018-07-12 03:15:02

标签: typescript sharepoint-online spfx

我正在使用PNP SP查询列表项及其附件。如何为当前函数编写正确且简化的版本?

下面的函数有效,我从第一个查询中获取结果,它检索ID,TITLE,LINK。但是第二个查询Title,Link.URL,FileName,ServerRelativeUR没有任何结果-但是,当我调试代码时,可以看到第二个查询正在执行并返回值,但是该函数在完成第二个查询之前就离开了。如何使此函数正确地查询所有内容并将它们返回给调用者?

2016-04-21 09:38:38+00:00
<class 'datetime.datetime'>

2 个答案:

答案 0 :(得分:2)

代替对每个列表项进行REST调用,您可以使用expand属性在第一个REST调用本身中获取数据。

您可以通过以下示例代码对其进行修改:

sp.web.lists.getByTitle("LIST").items.select("Title", "ID", "Links" "AttachmentFiles").
expand("AttachmentFiles").get().then((response) => {
      console.log(response);
});

您可以根据需要对其进行修改。这将为您提供列表项附件的数组,如下所示:

enter image description here

答案 1 :(得分:-1)

这是我的测试代码。

sp.web.lists.getByTitle('MyList').items.select('Id', 'Title', 'EncodedAbsUrl').get().then( response => {
      response.forEach( item => {
        let _Item = sp.web.lists.getByTitle("MyList").items.getById(item.ID);      
        _Item.attachmentFiles.select('FileName', 'ServerRelativeUrl').get().
        then( responseAttachments => {
          responseAttachments.forEach( attachmentItem => {
            result += item.Title                       + "<br/>" +
            item.EncodedAbsUrl                    + "<br/>" + 
            attachmentItem.FileName          + "<br/>" + 
            attachmentItem.ServerRelativeUrl + "<br/><br/>";
          });
        });        
      });
    })