react-native-sqlite-storage icon indicating copy to clipboard operation
react-native-sqlite-storage copied to clipboard

Error in opening the database : openDatabase()

Open saadaoui-3 opened this issue 2 years ago • 2 comments

Error in opening the database

import { openDatabase } from 'react-native-sqlite-storage'

const db = openDatabase({ name: `${dbName}.db` })

Cannot read properties of undefined (reading 'open')

The SQLitePlugin function includes a method called open :
SQLitePlugin = function(openargs, openSuccess, openError) {
  ...
  this.open(this.openSuccess, this.openError);
};

SQLitePlugin.prototype.open = function(success, error) {
  var openerrorcb, opensuccesscb;
  ...
}

When the SQLitePlugin function is called, an error is thrown that says "Cannot read properties of undefined (reading 'open')."

The problem is caused by the fact that SQLitePlugin is defined as a function rather than a class. As a result, the open method is defined as a prototype method rather than a class method. When open is called, it's being called on an instance of the SQLitePlugin function, but the prototype method isn't being recognized.

Possible solution

To fix this issue, you've proposed converting SQLitePlugin into a class. Here's what the updated code would look like:

SQLitePlugin = class {
  constructor(openargs, openSuccess, openError) {
    ...
    this.open(this.openSuccess, this.openError);
  }
}

plugin.exec = function(method, options, success, error) {
  if (plugin.sqlitePlugin.DEBUG){
    plugin.log("SQLite." + method + "(" + JSON.stringify(options) + ")");
  }
  console.log(new SQLitePlugin(options,success,error))
  // NativeModules["SQLite"][method](options,success,error);
};

By converting SQLitePlugin into a class, should allow open to be recognized when it's called. But still have another problem

After calling the "open" method i got another exception :

RangeError: Maximum call stack size exceeded at [Symbol.hasInstance] () _classCallCheck (...\node_modules@babel\runtime\helpers\classCallCheck.js:2:17)

saadaoui-3 avatar Apr 21 '23 16:04 saadaoui-3

I'm with same problem

DouglasFJ avatar Apr 04 '24 13:04 DouglasFJ

Same Issue +1

Ritesh175862 avatar May 07 '24 09:05 Ritesh175862