3.0 KiB
3.0 KiB
Исправление ошибки дублирования ключей
🚨 Проблема
Ошибка: duplicate key value violates unique constraint "city_objects_pkey"
- Объекты загружаются из БД с существующими ID
- При сохранении пытаемся создать объекты с теми же ID
- Это вызывает конфликт первичных ключей
✅ Решение
1. Исправлена логика на клиенте:
- Если у объекта есть ID → обновляем существующий
- Если у объекта нет ID → создаем новый
- Добавлено логирование для отладки
2. Исправлена логика на сервере:
- Проверка
if (id && id !== null && id !== undefined) - Если ID есть → UPDATE (обновление)
- Если ID нет → INSERT (создание)
- Добавлено подробное логирование
🔧 Как это работает:
Для существующих объектов:
- Объект загружается из БД с ID (например, 110)
- Пользователь редактирует объект
- При сохранении отправляется ID = 110
- Сервер выполняет UPDATE для ID = 110
- ✅ Объект обновлен
Для новых объектов:
- Пользователь добавляет новый объект
- У объекта нет ID (null)
- При сохранении отправляется ID = null
- Сервер выполняет INSERT без указания ID
- ✅ Новый объект создан с автоматическим ID
📋 Логи для отладки:
В консоли браузера:
🔄 Начинаем сохранение объекта в БД...
📝 Обновляем объект: Название объекта
📤 Отправляем данные на сервер: { id: 110, ... }
📡 Ответ сервера: 200 OK
✅ Объект успешно сохранен в БД: { id: 110, success: true }
В консоли сервера:
🔄 Обновляем существующий объект с ID: 110
✅ Объект обновлен: { id: 110 }
🎯 Результат:
- Существующие объекты обновляются
- Новые объекты создаются
- Нет конфликтов первичных ключей
- Все операции логируются для отладки
🔍 Проверка:
- Добавьте объект → нажмите "Сохранить"
- Отредактируйте объект → нажмите "Сохранить"
- Перезагрузите страницу → объекты должны загрузиться
- Проверьте логи в консоли браузера и сервера