Cannot read from Bundled Database

I bundle a pre-populated sqlite-database in the asset/sqlite/ folder of my project. I edited the metro.config.js in my root folder of the app like this

const { getDefaultConfig } = require('@expo/metro-config');

const defaultConfig = getDefaultConfig(__dirname);

module.exports = {
  resolver: {
    assetExts: [...defaultConfig.resolver.assetExts, 'db'],
  },
};

I then try to read the database like this

import * as SQLite from 'expo-sqlite';
import * as FileSystem from 'expo-file-system';
import { Asset } from 'expo-asset';

async function openDatabase() {
    // check if folder exists
    if (!(await FileSystem.getInfoAsync(FileSystem.documentDirectory + 'sqlite')).exists) {
        // if folder does not exist, create it
        await FileSystem.makeDirectoryAsync(FileSystem.documentDirectory + 'sqlite');
      }

    await FileSystem.downloadAsync(
        // grab database from asset folder
        Asset.fromModule(require('../../../assets/sqlite/foo.db')).uri,
        // move to new folder for application to work with it
        FileSystem.documentDirectory + 'sqlite/foo.db'
    )
    return SQLite.openDatabase('foo.db');
}

export function savePoints(location) {
    ...

    const somedb = openDatabase();

    locationdb.transaction(tx => {...}
}

But that gives me the following

[Unhandled promise rejection: Error: Directory for ‘file:///Users/…/Library/Developer/CoreSimulator/Devices/6CD71445-E39B-430A-9691-B174D6300E9A/data/Containers/Data/Application/B543CDCB-6D7E-47D2-ABDD-411FCE115C4C/Documents/ExponentExperienceData/%2540anonymous%252Fmapstar-b773f7ad-9cee-4848-8e06-82f7ca69effc//sqlite/foo.db’ doesn’t exist.

Please make sure directory ‘/Users/…/Library/Developer/CoreSimulator/Devices/6CD71445-E39B-430A-9691-B174D6300E9A/data/Containers/Data/Application/B543CDCB-6D7E-47D2-ABDD-411FCE115C4C/Documents/ExponentExperienceData/%40anonymous%2Fmapstar-b773f7ad-9cee-4848-8e06-82f7ca69effc/sqlite’ exists before calling downloadAsync.]

and

[Unhandled promise rejection: TypeError: undefined is not a function (near ‘…foo.db.transaction…’)]

Why is that? The database exists, the path is correct too.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.