169 похожих чатов

@Mdafanasev Добрый день! Прошу прощение за беспокойство, я в продолжение

вчерашнего вопроса об optimistic update. Основная проблема, на которой можно рассмотреть остальные случаи - ситуация, когда я создаю объект и начинаю редактировать на фронте, но на бэке его ещё не существует. Я правильно понимаю, что разумно при создании объекта присваивать uuid/nanoid. После чего я жду появления реального id и как только он появился - отправляю текущее состояние объекта. На практике у меня два разных action, которые я дёргаю в компоненте. Один вызывается если id ещё нет, другой, если id получен. Верно?

9 ответов

6 просмотров

Как вариант, вы можете использовать сгенерированный uuid как id объекта и на бэкенде тоже.

А нельзя дождаться, пока объект создастся, а потом уже отправлять запрос на редактирование? Типа если объект ещё не создался, то ставить в очередь на ожидание

Dmitry- Автор вопроса
Oleg Safonov
А нельзя дождаться, пока объект создастся, а потом...

Будет слишком грустно для пользователя

Dmitry- Автор вопроса
Maxim Afanasev
Как вариант, вы можете использовать сгенерированны...

Разумно. Спасибо. Ход мыслей в целом верный? Подобное поведение делается таким образом?

Dmitry
Будет слишком грустно для пользователя

Почему? Вы не рассматриваете вариант, когда на бэке случится ошибка в процессе создания и пользователь узнает об этом после создания и редактирования и потеряет наработки?

Dmitry- Автор вопроса
Oleg Safonov
Почему? Вы не рассматриваете вариант, когда на бэк...

Рассматриваю, конечно. И каждый случай обрабатываю. Таблица, которую нужно редактировать. Если ждать создания каждой строки (как обьекта), то выходит слишком неудобно

Dmitry
Разумно. Спасибо. Ход мыслей в целом верный? Подоб...

Это сложная тема. По возможности стоит избегать состояния eventual consistency между клиентами и сервером. Но если это невозможно, то гуглите на тему CRDT. Такие решения используют в collaborative editing и подобных задачах. Возможно, для ваших задач это излишне, но это вам виднее.

Dmitry- Автор вопроса
Maxim Afanasev
Это сложная тема. По возможности стоит избегать со...

У меня к счастью вопрос в collaborative editing пока не стоит. Слабая согласованность возникать может, но не очень часто. За CRDT отдельное спасибо!

Dmitry
У меня к счастью вопрос в collaborative editing по...

Она у вас возникает в тот момент, когда вы на клиенте создаете объект, а на сервере он еще не создан. Если вы даете возможность редактировать этот объект, не получив ответ от сервера - то число возможных конфликтов возрастает. И чем дальше - тем больше их будет и тем сложнее ими будет управлять. Я бы провел где-то границу допустимого.

Похожие вопросы

Обсуждают сегодня

кто поможет крякнуть чит? (реверс инжиринг) чтобы разблокировать премиум версию
Mёdkinson Medvezhkin
39
Вопрос по организации кода. Пилю свой велосипед логгер Есть у меня множество уровней сообщений. Я набрасываю сообщения в стринглист, а когда они нужны, вызываю их через функц...
Serjone
21
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Мне интересно, скорее людей здесь используют D, Rust, C/C++ для решения реальных прикладных задач за деньги?)
Evil Satanson
18
Has anyone experienced Sign in with Apple (with Firebase Authentication) does not provide name or email of the user even when requested with "email" and "fullName" scopes? He...
Sree (𝓣𝓪𝔂𝓵𝓸𝓻'𝓼 𝓥𝓮𝓻𝓼𝓲𝓸𝓷) 🦉 🦉
12
Ну например jcl/jvcl Они базовые общие ifdef'ы в сабмодуль выгрузили. С svn было проще. В принципе, если проекты вообще не зависят друг от друга - то нормально, но тогда заче...
Arioch The
10
Куда написать чтобы их Роскомнадзор ебнул как мтс за повышение тарифов?
Stargrapefruit
10
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
я использую код C в коде CPP, отправляю с помощью websocket данные, если сервер есть то никаких проблем нет, но если сервер падает то весь код ломается, а надо чтобы просто не...
Vladimir
1
всем вопрос. есть функция, которая иногда в линуксе валится с исключением EConvertError Invalid argument to date encode на строке Result:=LocalToUtcDateTime(FileDateToDateTime...
Handatros
10
Карта сайта