Storage Migration

Migrate data between storage formats

AdvancedTopic: LocalStorage/SessionStorage
Back

JavaScript Storage Migration Program

This program helps you to learn the fundamental structure and syntax of JavaScript programming.

Try This Code
// Method 1: Simple migration
function migrateStorage() {
    const oldData = localStorage.getItem('oldKey');
    if (oldData) {
        // Migrate to new format
        const newData = {
            version: 2,
            data: JSON.parse(oldData)
        };
        localStorage.setItem('newKey', JSON.stringify(newData));
        localStorage.removeItem('oldKey');
        console.log('Migration complete');
    }
}

// Method 2: Version-based migration
const STORAGE_VERSION = 2;

function checkAndMigrate() {
    const currentVersion = localStorage.getItem('storageVersion');
    
    if (!currentVersion || parseInt(currentVersion) < STORAGE_VERSION) {
        console.log('Migration needed');
        migrateToVersion(parseInt(currentVersion) || 1);
        localStorage.setItem('storageVersion', STORAGE_VERSION.toString());
    }
}

function migrateToVersion(fromVersion) {
    if (fromVersion === 1) {
        // Migrate from v1 to v2
        const v1Data = localStorage.getItem('userData');
        if (v1Data) {
            const data = JSON.parse(v1Data);
            const v2Data = {
                ...data,
                metadata: {
                    createdAt: new Date().toISOString(),
                    version: 2
                }
            };
            localStorage.setItem('userData', JSON.stringify(v2Data));
        }
    }
}

checkAndMigrate();

// Method 3: Migration with backup
function migrateWithBackup() {
    // Create backup
    const backup = {};
    for (let i = 0; i < localStorage.length; i++) {
        const key = localStorage.key(i);
        backup[key] = localStorage.getItem(key);
    }
    localStorage.setItem('backup_' + Date.now(), JSON.stringify(backup));
    
    // Perform migration
    try {
        migrateStorage();
        console.log('Migration successful');
    } catch (e) {
        console.error('Migration failed, restoring backup');
        // Restore from backup
        restoreBackup(backup);
    }
}

function restoreBackup(backup) {
    localStorage.clear();
    Object.keys(backup).forEach(key => {
        localStorage.setItem(key, backup[key]);
    });
}

// Method 4: Progressive migration
function progressiveMigration() {
    const migrationSteps = [
        () => migrateStep1(),
        () => migrateStep2(),
        () => migrateStep3()
    ];
    
    migrationSteps.forEach((step, index) => {
        try {
            step();
            console.log(`Step ${index + 1} complete`);
        } catch (e) {
            console.error(`Step ${index + 1} failed:`, e);
            throw e;
        }
    });
}

function migrateStep1() {
    // Step 1 logic
}

function migrateStep2() {
    // Step 2 logic
}

function migrateStep3() {
    // Step 3 logic
}

// Method 5: Data transformation
function transformData(oldFormat) {
    // Transform old format to new format
    return {
        id: oldFormat.userId,
        name: oldFormat.fullName,
        email: oldFormat.emailAddress,
        settings: {
            theme: oldFormat.theme || 'light',
            notifications: oldFormat.notify || true
        }
    };
}

function migrateUserData() {
    const oldData = localStorage.getItem('oldUserData');
    if (oldData) {
        const parsed = JSON.parse(oldData);
        const newData = transformData(parsed);
        localStorage.setItem('userData', JSON.stringify(newData));
        localStorage.removeItem('oldUserData');
    }
}
Output
Migration complete
Migration needed
Step 1 complete
Step 2 complete
Step 3 complete

Understanding Storage Migration

Migration updates storage format.

Migration Strategies

Version-based
Backup before migrate
Progressive steps
Data transformation

Best Practices

Check version
Create backups
Test migrations
Handle errors

Use Cases

Schema changes
Format updates
Data restructuring
Version upgrades

Important

Always backup
Test thoroughly
Handle failures
Document changes

Let us now understand every line and the components of the above program.

Note: To write and run JavaScript programs, you need to set up the local environment on your computer. Refer to the complete article Setting up JavaScript Development Environment. If you do not want to set up the local environment on your computer, you can also use online IDE to write and run your JavaScript programs.

Table of Contents