Повторное открытие PouchDB во второй фабрике Angular приводит к тому, что Pouch не использует плагин SQLite

0

Я пишу приложение Ionic, которое использует PouchDB и плагин SQLite. У меня есть фабрика, ответственная за открытие db и выявление некоторых методов для получения записей и т. Д.:

.factory('PouchdbFactory', ['$q', function ($q) {

        var db,
            codes = [];

        var initDB = function() {
            db = new PouchDB('codes', {adapter: 'websql', auto_compaction: true, location: 2}); // location should be 2
            // Listen for changes on the database
            db.changes({ live: true, since: 'now', include_docs: true}).on('change', onDatabaseChange);

            db.info().then(console.log.bind(console));
        }
...etc...

И еще один завод, который возвращает методы, которые используются для периодического получения записей и их изменения.

 .factory('OtpFactory', ['$rootScope', '$interval', 'PouchdbFactory',  function($rootScope, $interval, PouchdbFactory) {

        var otpCodes,
            globalTimerPromise,
            totpObj = new TOTP();

        // this breaks sqllite plugin (db.info().then(console.log.bind(console)); returns sqlite_plugin: false )
        PouchdbFactory.initDB();

        PouchdbFactory.getAllCodes().then(function(codes) {
            otpCodes = codes;
        });

Вызов PouchdbFactory.initDB(); на второй фабрике получается сумка, не использующая плагин SQLite (db.info().then(console.log.bind(console)); возвращает sqlite_plugin: false).

Я все еще изучаю Angular, поэтому, возможно, это не способ структурировать его. Я мог бы переместить создание db в $rootscope чтобы база данных могла иметь доступ на всех фабриках, но я не понимаю, почему вызывать PouchdbFactory.initDB(); второй раз означает отсутствие sqlite_plugin.

Есть идеи?

Теги:
ionic-framework
pouchdb

1 ответ

0

Не то, чтобы это причина ошибки, но я бы скорее просто вернул экземпляр db, если он был инициализирован. Попробуйте предложение guard в init, которое проверяет db, было инициализировано - если у него есть обратное db сразу, если нет, то продолжайте его инициализировать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню