• Можно ли получить стутус изменения данных в indexedDB?

    @Khamzabek
    Это означает, что вы используете индексированный ключ (keyPath), который автоматически генерируется базой данных при создании объектного хранилища. Для таких случаев вы должны использовать метод add() вместо put(), чтобы добавить новую запись с автоматически сгенерированным ключом.

    Вот пример использования метода add() для добавления записи в объектное хранилище:

    function dbAdd(table, data){
        let openRequest = indexedDB.open('mydb', 1);
        openRequest.onsuccess = function() {
            let db = openRequest.result;
            let transaction = db.transaction(table, 'readwrite');
            let objectStore = transaction.objectStore(table);
            let request = objectStore.add(data); // добавление с автоинкрементным ключом
            request.onsuccess = function(event) {
                console.log('Record added');
            };
            db.close();
        };
    }


    Обратите внимание, что вызов метода add() соответствует добавлению новой записи с автоматически сгенерированным ключом, тогда как использование метода put() требует явного указания ключа записи.
  • Можно ли получить стутус изменения данных в indexedDB?

    @Khamzabek
    Если вы всегда получаете "Record added", даже после повторной попытки добавить данные с тем же ключом, это может быть связано с тем, что вы используете автоинкрементный ключ. В этом случае каждый раз, когда вы вызываете put() без ключа, будет добавлен новый элемент, даже если он имеет те же самые данные.

    Чтобы решить эту проблему, вы можете использовать явный ключ при добавлении данных. Если элемент уже существует, он будет заменен. Вот пример:

    function dbput(table, data){
        let openRequest = indexedDB.open('mydb', 1);
        openRequest.onsuccess = function() {
            let db = openRequest.result;
            let transaction = db.transaction(table, 'readwrite');
            let objectStore = transaction.objectStore(table);
            let key = data.id; // явный ключ
            let request = objectStore.put(data, key); // добавление с явным ключом
            request.onsuccess = function(event) {
                console.log('Record added/updated');
            };
            db.close();
        };
    }


    В этом примере я использовал поле "id" в объекте данных в качестве явного ключа. Если у вас нет явного ключа, вы можете использовать любое другое уникальное поле в качестве ключа или создать его программно, например, путем использования временной метки или случайного числа.
  • Как на Vite сгенерировать приложение в виде виджета для сторонних сайтов?

    @Khamzabek
    Если вы находитесь в режиме разработки, то вы можете использовать команду npm run dev для запуска проекта в режиме разработки. Но чтобы загрузить файлы на другой сайт, вам нужно сначала собрать проект в режиме Production, как описано выше.

    Если нужно загрузить проект на локальный сервер для тестирования, то вам нужно запустить локальный сервер с помощью команды npm run serve и перейти по адресу, который будет указан после запуска сервера. Обычно это http://localhost:port, где port - порт, указанный в настройках проекта.