版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shrenk/article/details/83068777
如果使用pnpjs更新一个item的某个或者某几个field的值,通常使用update方法,具体使用方式可以参见使用pnp添加或者更新一个field的值这篇博客。这里介绍的是另一种方法“validateUpdateListItem”,使用这个方法可以免去构造一些对象的麻烦,如果更新失败,还会返回具体的错误信息。
基本使用方法:
const list = sp.web.lists.getByTitle("list Title");
list.items.getById(1).validateUpdateListItem({FieldName: "Title", FieldValue: "MyTitle"}).then(r=>{console.log(r);}).catch(e=>{console.log(e);});
参数:{FieldName: string, FieldValue: string}
返回值:{"ErrorMessage": null, "FieldName": "Title", "FieldValue": "MyTitle", "HasException": false, "ItemId": 1}
其中参数里的FieldName是指field的InternalName.
如果正确更新field的值,返回值对象中的HasException为false,ErrorMessage为null,如果更新field失败,返回值对象中的HasException为true,ErrorMessage为错误信息。
如果需要一次更新多个field,可以传入数组[{FieldName: "Title", FieldValue: "MyTitle"}, {FieldName: "Number", FieldValue: "123"}]
相应的返回值也是一个数组。
目前这个方法的文档很少,下面总结一些经过验证的,不同field类型需要的参数:
Field | TypeAsString | 参数 | Note |
---|---|---|---|
单行文本(single line of text) | Text | {FieldName:"name", FieldValue "abc"} | |
多行文本(multiple line of text) | Note | {FieldName:"name", FieldValue "abc"} | |
选择(Choice) | Choice | {FieldName:"name", FieldValue "Choice 1"} | |
多项选择(Multiple Choice) | MultiChoice | {FieldName:"name", FieldValue "Choice 1;#Choice2"} | ;#连接 |
数字(Number) | Number | {FieldName:"name", FieldValue "100"} | |
是否(Yes/No) | Boolean | {FieldName:"name", FieldValue "Yes"} | ”Yes“或”No“ |
超链接(Hyperlink) | URL | {FieldName:"name", FieldValue "http://bing.com, 必应"} | ,分隔url和文本 |
用户或组 (PeopleGroup) | User | {FieldName: "name", FieldValue: "[{ ‘Key’: ‘LoginName’ }]")} 或 {FieldName: "name", FieldValue: JSON.stringify([{ Key: LoginName }])} | LoginName示例:i:0#.f|membership|[email protected] |
用户或组 多值(PeopleGroup) | UserMulti | {FieldName: "name", FieldValue: JSON.stringify([{ Key: LoginName }, {Key: LoginName}])} | |
Taxonomy | TaxonomyFieldType |
{FieldName:"name", FieldValue:“TermLabel|TermId”} | TermLabel:term的标签,TermId:term的guid,使用'|'分隔 |
Taxonomy多值 | TaxonomyFieldTypeMulti |
{FieldName:"name", FieldValue:“TermLabel1|TermId1;TermLabel2|TermId2”} | 多个值使用';'分隔 |
Lookup | Lookup | {FieldName: "name", FieldValue: "1"}, | FieldValue的值是lookup的item的id (需转换为字符串) |
Lookup多值 | LookupMulti | {FieldName: "name", FieldValue: "1;#;#2;#;#3"}, | 使用;#;#分隔多值 |