У меня есть сценарий, в котором мне нужно получить данные списков с подсайтов 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.info(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.info(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.info(e)
reject(e)
}
});
}
Мой код работает в AWS Lambda. Время выполнения: nodejs 10+
В Sharepoint добавлены некоторые участники, и я пытаюсь получить их, чтобы сохранить в базе данных. У каждого сайта есть уникальные участники, например участники site1 - p1, p2, p3, а участники site2 - pp1, pp2, pp3. Когда мой код запускается для site1, я получаю правильных участников, но для site2 я получаю неправильных участников с site1. Я распечатал журналы и выяснил, что fetchClientFactory не обновляется. У меня нет прямого доступа к sharepoint, и я впервые использую Sharepoint nodejs lib.
Спасибо, как в таком случае добиться желаемых результатов? любое предложение? Я пытаюсь получить список дополнительных сайтов, а затем списки, но не могу понять, как это сделать.
Я не эксперт по SharePoint, но вы сможете избежать синглтона, создав отдельные экземпляры SPRest самостоятельно. Если вы создаете отдельные экземпляры и вставляете новое _runtime в каждый из них (см. Подпись конструктора в приведенном выше коде), вы сможете использовать .setup () их независимо.
Спасибо за руководство, думаю, я могу использовать createIsolated.
Это синглтон - см. Здесь: github.com/pnp/pnpjs/blob/…