App Maker - проблемы при попытке получить список всех пользователей в моем отделе - PullRequest
0 голосов
/ 28 сентября 2018

Я работаю над небольшим приложением с помощью Google App Maker и хочу загрузить пользователей, которые находятся в том же отделе, что и я, при запуске приложения.

Я создал источник данных с именем "Person"который идет в каталог, затем я создал еще один, названный "DepartmentMembers", и внутри него я поместил скрипт для запроса каталога на основе электронной почты активного пользователя в сеансе и поиска имени его отдела.Затем, используя другой запрос, я хотел перечислить пользователей на основе названия этого отдела.

Однако при предварительном просмотре приложения я получаю следующую ошибку:

E Fri Sep 28 19:26:53 GMT+300 2018 AssertionError: Assertion failed: DirectoryDao.isFilterSupported: Filtering on 'PrimaryOrganizationDepartment' is not supported.

E Fri Sep 28 19:26:53 GMT+300 2018 Executing query for datasource DepartmentMembers: (Error) : Assertion failed: DirectoryDao.isFilterSupported: Filtering on 'PrimaryOrganizationDepartment' is not supported.

E Fri Sep 28 19:26:53 GMT+300 2018 Executing query for datasource DepartmentMembers failed.

Вот код, который у меня есть:

function getUserDeptWorkers()
{
  var result = [];
  var dept;
  var email = Session.getActiveUser().getEmail();
  var newQuery = app.models.Person.newQuery();
  newQuery.filters.PrimaryEmail._equals = email;
  var userRecords = newQuery.run();
  if (userRecords.length === 0) {
    // got no information for this user
      return [];
  } else {
    var user = userRecords[0];
    dept = user.PrimaryOrganizationDepartment;
  }

  var deptQuery = app.models.Person.newQuery();
  deptQuery.filters.PrimaryOrganizationDepartment._equals = dept;
  var coWorkers = deptQuery.run();
  if (coWorkers.length === 0)
  {
    return [];
  }


  result.push(coWorkers);
  return result;
}

1 Ответ

0 голосов
/ 29 сентября 2018

Я не могу точно объяснить причину возникновения этой ошибки, поскольку в вашем вопросе отсутствует информация, которая поможет мне помочь вам с отладкой;Тем не менее, я понимаю, чего вы пытаетесь достичь, и вот шаги, которые я предпринял:

1. Создайте модель каталога и назовите ее «people» или как вам угодно.enter image description here

2. Создайте источник данных внутри этой модели и назовите его «userDeptWorkers» или как вам угодно.enter image description here

3. Добавьте этот код в раздел построителя запросов источника данных: enter image description here

var results = [];
var allUsers = query.run();
var user;
for(var i=0; i<allUsers.length; i++){
  if(allUsers[i].PrimaryEmail === Session.getActiveUser().getEmail()){
    user = allUsers[i];
    break;
  }
}

for(var k=0; k<allUsers.length; k++){
  if(allUsers[k].PrimaryOrganizationDepartment === user.PrimaryOrganizationDepartment){
    results.push(allUsers[k]);
  }
}

return results;


4. На тестовой странице удалите таблицу с источником данных «userDeptWorkers» или любым другим именем, которое вы назвали, и просмотрите приложение.Вы должны получить то, что вам нужно.

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

Надеюсь, это поможет вам сейчас!

...