#laravel #vuejs2 #vuex #laravel-blade
Вопрос:
Давайте представим, что я создаю веб-сайт электронной коммерции, на котором пользователь может размещать товары в своей корзине. Представьте себе сценарий , в котором пользователь 1 кладет товар 1 в корзину, теперь количество берется из базы данных с помощью axios. Другой пользователь2 случайно взял тот же товар1 и совершил транзакцию, в то время как пользователь1 еще не совершил ее(все еще в корзине). Теперь количество пользователей 1, пункт 1 не отражает правильное количество в бд с использованием axios.
Любой способ синхронизации количества в бд с vue.js количество данных и их обновление?
Спасибо за помощь.
Комментарии:
1. Используйте сеансы для состояния корзины, а затем сохраняйтесь в базе данных для проверки. Вы не запретили бы пользователям просто добавлять элемент, но если бы это требовалось, вы могли бы удерживать элемент в течение заданного времени ожидания, блокируя других пользователей, или использовать библиотеку сокетов.
2. Я мог бы сказать вам, что наиболее удобный способ синхронизации вашей базы данных с Vue-это использование WebSockets и vuex. И то, и другое является отличным сочетанием и обеспечивает отличный пользовательский интерфейс. Но в вашем случае вам придется извлечь всю таблицу продуктов и распространить ее на любого пользователя, просматривающего ваш магазин, что приведет к ОГРОМНОМУ состоянию vuex, поэтому много памяти браузера будет использоваться только для сохранения состояния ваших продуктов в конце пользователя. Как сказал @Тим, лучший подход здесь-просто сообщить пользователю, что товар недоступен на странице оформления заказа, как это делает большинство веб-сайтов электронной коммерции.
3. Спасибо Тиму и Лучано за ответы. Что касается сеансов, я не думаю, что это необходимо, когда присутствует vuex. Я проверю веб-сайты и прочитаю об этом. Другая альтернатива-установить количество состояния с помощью некоторых методов каждый раз, когда пользователь фиксируется в базе данных, да, это повлияет на количество в каждой пользовательской корзине, мне все еще нужно подумать, как это сделать, я все еще новичок и учусь в отношении Vue.js 🙂