PouchDBとSQLiteプラグインを使用するIonicアプリケーションを作成しています。2番目のAngularファクトリーでPouchDBを開くと、PouchはSQLiteプラグインを使用しません。
.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...
し、定期的にレコードを取得し、それらを変更するために使用されるメソッドを返し、別の工場:私は、DBを開いてなど、レコードを取得するためのいくつかのメソッドを公開する責任の工場を持っています。 SQLiteのプラグイン(db.info().then(console.log.bind(console));
戻りsqlite_plugin: false
)を使用していないポーチ第二工場の結果でPouchdbFactory.initDB();
を呼び出す
.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;
});
。
私はまだAngularを学んでいますので、おそらくこれは構造化する方法ではありません。私は$rootscope
にデータベースを移動することができますので、データベースはすべての工場でアクセスできますが、なぜPouchdbFactory.initDB();
を呼び出すのがなぜsqlite_pluginを意味しないのかわかりません。
アイデア?