多次调用时,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 (将#修改为@)