使用 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>
<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
};
我正在构建 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>
<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
};