Вы можете захватить все значения id
в массиве, используя Lodash , который является внешним модулем, который вы можете использовать в приложении Postman.
Сохранение array
в качестве переменной после этого - то же самое, что вы уже сделали, но я добавил JSON.stringify()
вокруг значения массива, или он сохранит это как строку.
let giftsArray = []
_.each(pm.response.json().gifts, (item) => {
giftsArray.push(item.id)
})
pm.environment.set('giftsToCollect', JSON.stringify(giftsArray))
После этого вы сможете ссылаться на переменную среды следующим образом:
gift_ids: {{giftsToCollect}}
Я смоделировал данные запроса локально, просто чтобы показать вам этот захват значения из данных.
Один из способов решить эту проблему - сохранить текущего зарегистрированного пользователя в памяти до повышения прав. Далее в запросе на обновление замените «Системная учетная запись» на вашу переменную.
См. Ниже:
// Keep a reference of the Logged in user in memory
SPUser currentUser = SPContext.Current.Web.CurrentUser;
SPSecurity.RunWithElevatedPrivileges(
delegate
{
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.Url))
using (SPWeb targetWeb = elevatedSite.OpenWeb(webUrl))
{
targetWeb.AllowUnsafeUpdates = true;
SPFile newFile = files.Add(filename, file);
SPListItem item = newFile.Item;
// Replace 'System Account' with current user
item["Author"] = currentUser;
item["Modified By"] = currentUser;
item.SystemUpdate();
}
});
Надеюсь, это поможет.
Возможно, имитация может быть вариантом, который поможет вам решить вашу проблему.
Некоторые сведения об этом: http://dotnet.org.za/zlatan/archive/2007/08/05/sharepoint-2007-impersonation.aspx http://www.sharepointblogs.com/mirjam/archive/2006/11 /02/impersonation-in-sharepoint-2007.aspx
Вы пробовали это вместо SPSecurity.RunWithElevatedPrivileges?
using (WindowsImpersonationContext w = WindowsIdentity.Impersonate(IntPtr.Zero))
{
//Do stuff here
}