Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Batch-запрос с новым детейлом #289

Open
Anisimova2020 opened this issue Sep 13, 2023 · 0 comments
Open

Batch-запрос с новым детейлом #289

Anisimova2020 opened this issue Sep 13, 2023 · 0 comments
Assignees

Comments

@Anisimova2020
Copy link
Contributor

Описание ошибки

По утверждению пользователей если производить Batch-запросы с новым детейлом и с существующим детейлом и в CallBack BeforeUpdate вызывать исключение, то при существующем детейле приходит красиво упакованное исключение с необходимой детальностью, а при новом детейле исключение минимально подробно.

Ожидаемое поведение

Исключения должны приходить одинаковой подробности.

Шаги воспроизведения

До написания этого issue проводилась проверка, что с интеграционного теста проекта ODataService детейлы отправлялись заявленным способом, однако всё отрабатывалось корректно и сообщения об ошибке приходили как надо, поэтому проверку нужно проводить полностью как у пользователей.

  1. Используется фреймворк 4.8 на одата-бакенде.
  2. В эмбер-приложении код примерно следующий:

let changingRecords = A();
changingRecords.pushObject(model);
model.eachRelationship((name, desc) => {
if (desc.kind === 'hasMany' && desc.type !== '...-map-layer') {
model.get(name).filter(a => {
return a.get('hasDirtyAttributes') a.hasChangedBelongsTo();
}).forEach(record => {
changingRecords.push(record);
});
}
});

return store.batchUpdate(changingRecords).then(() => {
let generation = this.get('model.lastGeneration.id');
if (this.get('model.typeLayer') === 'vector' && curGeneration !== generation) {
return this.checkStatus(generation).then((g) => {
if (g.get('state') === 'Success') {
Promise.resolve();
} else {
let message = 'Сохранение слоя не было выполнено по техническим причинам. ';
return reject({ message: message, caption: 'Внимание' });
}
});
} else return Promise.resolve();
}).catch((error) => {
console.error(error);
let message = '';

      // тут нет возможности нормально определить ошибку
      message = 'Сохранение слоя не было выполнено по техническим причинам. ';
      return reject({ message: message, caption: 'Внимание' });
    });
  1. Утверждается, что если отправлять на сохранение модифицированный агрегатор и детейл модифицированный. то при проброске исключения в beforeUpdate на бакенде возвращается аккуратное исключение, где корректно можно разобрать внутренние поля. А если то же самое при модифицированном агрегаторе и созданном детейле, то ошибка возвращается не подробная.

Нужно проверить, что такое поведение имеет место быть. Если подтвердится, то требуется запланировать исправление ошибки.

@Anisimova2020 Anisimova2020 self-assigned this Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant