使用 React PNPJs 推送到 SharePoint 列表后检索 ID

Retrieve ID after pushing to SharePoint list using React PNPJs

我正在构建 SharePoint SPFx React 应用程序。简而言之,用户填写我创建的表单。当用户点击提交时,使用 PNPJ:https://pnp.github.io/pnpjs/sp/items/ 我将项目添加到名为 Request.

的列表中

我想从那里向他们创建的项目发送一封包含 URL link 的电子邮件。现在,我的代码将项目添加到列表中,我可以毫无问题地发送电子邮件。但是,我想获取刚刚添加到列表中的项目的 ID,以便我可以将其添加到电子邮件中。

这是我的函数的精简代码片段,用于将项目添加到 Request 列表。

async submitNewRequest():Promise<any> {

    let preprocessedData;

    try {       

        // add an item to the list
        pnp.sp.web.lists.getByTitle("Requests").items.add({
            Title: this.state.Title,
            Requestor_x0020_Email: this.state.getEmail,
            Created: this.state.startDate,

        }).then((iar) => {
            console.log(iar);
            //Is this where I would get the ID 
        }); 
            
        const emailProps: EmailProperties = {
            To: [this.state.getEmail],
            Subject: "Your court requisition has been submitted.",
            Body: this.initalMessage
        };
        
    } catch(error) {

    }

    return preprocessedData;            


}

我相信我必须做的是在 .then((iar) => { 项目成功添加到列表后,获得包含该项目 ID 的响应。但我不确定如何。在我的 const emailProps: EmailProperties 是我发送电子邮件的地方,它再次有效。

通常我可以做这样的事情 await sp.web.lists.getByTitle("Request").items.getById(1).get(); 并且在控制台中我会得到这样的结果:

0:
Title: "My title here"
Description: "Description Here"
ID: 24

这是提交功能:

async _onNewRequest(event) {
    event.preventDefault();
    await this.submitNewRequest();
    this.displayPop();
}   

最后是我的电子邮件功能:

get initalMessage() {
    return `<p>This is my email template that I stripped down.</p>
    
    &nbsp;
    <p>
    <a href="https://mywebsite.sharepoint.com/sites/Requests/SitePages/Home.aspx#/MyRequests/'+ NEED_ID_HERE +'" target="_blank">
        Click Here
    </a>
</p>`; 

您可以像这样检索项目的 ID:

  sp.web.lists.getByTitle("ct0").items.add({
    Title:"test"
  }).then(iar=>{
    console.log(iar.data.ID);
  })

代码应该是这样的:

  const iar=await sp.web.lists.getByTitle("ct0").items.add({
    Title:"test"
  });
  const id=iar.data.ID;
  const emailProps: EmailProperties = {
        To: [this.state.getEmail],
        Subject: "Your court requisition has been submitted.",
        Body: this.initalMessage,
        ID:id
  };