微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多次调用时,Sharepoint fetchClientFactory 不会更新站点 url

如何解决多次调用时,Sharepoint fetchClientFactory 不会更新站点 url

我有一个场景,我需要从 Sharepoint 子站点获取列表数据。

我的代码是这样的。

const nodejs_1 = require("@pnp/nodejs");
const sp_1 = require("@pnp/sp"); 


let sitesArray = ['site1','site2','site3','site4','site5']
for(let i = 0; i < sitesArray.length; i++){
    let participants = await importParticipantsFromSharepoint(sitesArray[i]);
    console.log(participants)
}
//following is separate lambda function
function importParticipantsFromSharepoint(protocol_code){
        return new Promise( async function(resolve,reject) {  
            const participants = [];
            try{
                 sp_1.sp.setup({
                    sp: {
                        fetchClientFactory: function () {
                            //on each function call I am updating the base url
                            return new nodejs_1.SPFetchClient("https://abcd.sharepoint.com/Proj/Active/" + protocol_code,"********************","**********************");
                        }
                    }
                });
                let w = await sp_1.sp.web.get();// at second iteration its still printing the data from first iteration
                console.log(JSON.stringify(w));// 
                sp_1.sp.web.lists.getByTitle("Subject Tracking Log").items.top(1000).get().then(function (items) {
                    items.forEach(function(item){
                        
                    });
                    resolve(participants);
                });
            }catch(e){
                console.log(e)
                reject(e)
            }
        });
    }  

 

我的代码在 AWS Lambda 中运行。 运行时:nodejs 10+

在 Sharepoint 中添加了一些参与者,我正在尝试获取它们以保存在 db 中。每个站点都有唯一的参与者,就像在站点 1 中的参与者是 p1、p2、p3,在站点 2 中的参与者是 pp1、pp2、pp3。当我的代码为 site1 运行时,我得到了正确的参与者,但对于 site2,我从 site1 得到了错误的参与者。我已经打印了日志并发现 fetchClientFactory 没有被更新。我无法直接访问 sharepoint,这是我第一次使用 Sharepoint nodejs lib。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。