Как получить элементы из SharePoint текущим пользователем через REST или JSOM?

У меня есть список SharePoint с двумя столбцами:

users (type people, multiple values allowed)
responsible_department (type string)

Я хочу получить элементы из этого списка, где текущий пользователь находится в поле «Пользователи». В поле может быть несколько пользователей (разрешено несколько пользователей)!

В настоящее время я могу получить текущего пользователя:

    var currentUser;
    function init() {
        this.clientContext = new SP.ClientContext.get_current();
        this.oWeb = clientContext.get_web();
        currentUser = this.oWeb.get_currentUser();
        this.clientContext.load(currentUser);
        this.clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }

    function onQuerySucceeded() {
        console.log(currentUser.get_loginName());
    }

    function onQueryFailed(sender, args) {
        console.log('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
    }

Нет, мне нужно запрашивать поле пользователя mutli в моем списке для всех элементов, в которых мой текущий пользователь является частью поля людей. Я не знаю, как это сделать.

Кто-нибудь может мне помочь?


person STORM    schedule 21.09.2016    source источник
comment
Это всего лишь подсказка, запрос CAML с содержанием ... ‹Where› ‹Contains› ‹FieldRef Name = Name /› ‹Тип значения = Текст› + YourValue + / Value ›‹/Contains› ‹/Where›;   -  person vinayak hegde    schedule 21.09.2016
comment
Но это можно использовать только в объектной модели сервера с SPQuery? Не так ли?   -  person STORM    schedule 21.09.2016
comment
Нет, вы также можете использовать его в JSOM   -  person vinayak hegde    schedule 21.09.2016


Ответы (1)


Я нашел решение в MSDN, и это работает для меня:

<script src="//code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
 var siteURL = _spPageContextInfo.webAbsoluteUrl;
 var listname = "CustomList";
 var currentUserId=_spPageContextInfo.userId;
 var url = siteURL + "/_api/web/lists/getbytitle('" + listname + "')/items?$select=Title,PeopleField/ID&$filter=substringof('"+currentUserId+"',PeopleField/ID)&$expand=PeopleField/ID";
 $.ajax({
     url: url,
     method: "GET",
     headers: { "Accept": "application/json; odata=verbose" },
     success: function (data) {      
        var items = data.d.results;
        for(var i = 0; i < items.length;i++) {           
            var item=items[i];
            console.log(item.Title);
        }       
     },
     error: function (data) {       
     }
 });
});
</script>
person STORM    schedule 23.09.2016