2017-01-05 2 views
1

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

Ошибка:

{ 
    "__ERROR": [ 
    { 
     "message": "No permission to describe the User datastore class", 
     "componentSignature": "dbmg", 
     "errCode": 1609 
    } 
    ] 
} 

Что считается лучшей практики использования метода getCatalog()? Лучше ли передавать класс данных, необходимый для метода getCatalog(), при каждом вызове, сделанном на сервер?

Пример углового сервисной компании:

@Injectable() 
export class CompanyService { 

    constructor(private wakandaService: WakandaService, 
       private exceptionService: ExceptionService) { 
    } 

    getCompanyList(): any { 
    return this.wakandaService.getCatalog(['Company']) 
    .then(data => { 
     return data.UserProfile.getProfile(); 
    }) 
    .then(data => {  
     return data; 
    }) 
    .catch(error => this.exceptionService.error(error)); 
    } 
} 

ОБНОВЛЕНИЕ:

DataModel

DataModel

Разрешения

Роль & Пользовательским классам данных необходимы разрешения «Admin». Класс данных UserProfile требует прав «Пользователь» и расширен из класса данных пользователя.

Ошибка

После входа в систему пользователя и вызвать getCatalog(['UserProfile']) ошибка «Необходимое Роль DATACLASS нет в каталоге» возвращается. -> Это правильно? Почему в REST API работает то же самое?

http://localhost:8081/rest/ $ catalog/UserProfile работает нормально.

При входе в систему Пользователь и вызов getCatalog(['UserProfile', 'Role']) Ошибка «Разрешение на описание класса хранилища данных ролей» возвращается. -> OK

ответ

1

Не уверен, что еще есть все детали, необходимые, чтобы полностью ответить вам (не уверен, о том, как ваша модель определена (Пользователь, UserProfile ..) Но тем не менее здесь, как это работает При передаче DATACLASS.. в методе getCatalog() он возвращает только указанный DATACLASS.

Внимание Если dataclasses связаны (отношение <>) необходимо добавить соответствующие dataclasses (расширяемой автоматически требуется)

вы должны быть способный заставить его работать простым письмом return this.wakandaService.getCatalog(['Company', 'User'])

Конечно, вы можете также передать пустой массив, чтобы получить весь каталог this.wakandaService.getCatalog()

Не могли бы вы подтвердить мне, что это решает проблему?

спасибо :)

+0

Привет, Фред, я сделал обновление на своем посту, пытаясь быть немного более полезным. Надеюсь, вы понимаете, что я пытаюсь объяснить. – Stefan

1

Действительно жаль, я полностью пропустил тот факт, вы обновили свой пост. Спасибо за обновление кстати, теперь это совершенно ясно. Ну, я сделал быстрое решение, чтобы попытаться воспроизвести проблему yr. (это не совсем то же самое, но это помогло)

Несколько точек:

  • Мы недавно обновили метод getCatalog, чтобы сделать его более равным REST API. В нашем DEV версии, когда у вас есть расширенный DATACLASS и родственное DATACLASS вы должны добавить в getCatalog все dataclasses В вашем случае это будет:

getCatalog(['UserProfile', 'Role', User]) При этом вы можете

wakClient.getCatalog(['UserProfile', 'User', 'Role']).then(function (ds) { 
    console.log(ds); 
    ds.UserProfile.query().then(function (result) 
     { 
    console.log(result) 
      } 
    )  
    }); 

и это работает

  • Однако I'de сделать это быстрый тест с read Permissions и не описать, как мы в настоящее время есть ошибка в разрешении describe. Как только мы исправим его, я повторю тот же тест с описанием разрешений и вернусь к вам как можно скорее.
Смежные вопросы