Синхронизация приложения с базой данных и с react.js?
Здравствуйте, попробую описать проблему вкратце.
Допустим есть приложение, на JS. Есть View под него (react + alt.js). И есть некая обертка (CRUD) для работы с БД (indexedDb + какая-нибудь серверная база(не суть)).
Опишу абстрактно:
Допустим приложение: пистолет :) Юзер вызывает метод стрелять, этот метод уменьшает количество оставшихся патронов на 1. Мне надо сразу это в базу записать. Но допустим в описании этого метода, не будешь же тут же вызывать объект CRUD'а. и вызывать там же update... Это в каждом методе пистолета придется делать. Как это правильно реализуется?
Потом этот же метод в приложении должен state flux'a поменять и обновить вьюху...
Собственно вопрос: как правильно все это синхронизуется, чтобы после изменения состояния, все это сразу в базу записывалось? где про это почитать? Какая архитектура должна быть? Какую хорошую литературу посоветуете. Желательно по самим принципам.
Все зависит от реализации.
Как пример.
Когда ты стреляешь. Ты говоришь серверу я стреляю туда то. И забываешь об этом.
Север обрабатывает сообщение. Если число патрон уменьшилось. Посылает тебе состояние твоего пистолета, сколько в нем патронов и т.п.
Ты разбираешь пакет от сервера и обновляешь состояние ужу у себя. Как ты это реализуешь это твое дело.
Есть другая модель, когда логика выполняется только на стороне клиента. Т.е. ты только говоришь серверу свое состояние, а сервер тебе верит.
да у меня вторая модель, только состояние не целиком сохраняется, а по кусочкам. То есть у затвора свое состояние, у магазина свое, когда вызываешь метод стрелять у пистолета, вызывается метод магазина которые уменьшает количество пуль на одну, у него изменилось состояние... и надо это состояние автоматически в базу записать. Как это сделать? для работы с базой простая rest - обертка. Эта обертка у каждого элемента пистолета своя. Вот на примере допустим
Вам надо разобраться с флюком. А конкретно добавить в Store обработчики на события пистолета, которые будут отсылать данные в БД.
А пока не разобрались можно по таймауту весь стейт в бд скидывать. xD
IvanDix: в том то и дело что сама логика приложения совсем отдельно от реакта и флакса работает, стейт флакса просто с ним синхронизируется, но это не страшно... с этим я разберусь... А вот на вашем примере, допустим чтобы в каждом экшене (методе в сторе) не писать crud.update(value), как сделать автоматическое добавление в базу нужного значения (ну что то типо обработчика onChange)
IvanDix: :D:D:D то есть чтобы опять же не вручную это писать на каждом методе crud.update, а чтобы это все за кадром делалось :D:D уф не знаю как обяснить)