Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 在进行实时复制时,销毁是干净的吗?_Ionic Framework_Synchronization_Pouchdb_Destroy - Fatal编程技术网

Ionic framework 在进行实时复制时,销毁是干净的吗?

Ionic framework 在进行实时复制时,销毁是干净的吗?,ionic-framework,synchronization,pouchdb,destroy,Ionic Framework,Synchronization,Pouchdb,Destroy,我的移动应用程序Ionic 1中存在数据损坏,这是非常偶然的情况 该应用程序正在与登录到远程CouchDB服务器的用户协作。每个用户在服务器中都有自己的数据库。应用程序中一次只有一个会话,但用户a可能会使用该应用程序,然后注销,然后用户B登录以使用该应用程序 在本地,该应用程序有一个独特的PockDB,在登录时创建,然后与用户的远程couchDB实时同步,然后在注销时销毁 问题:在我无法重现的非常随机和不频繁的情况下,用户A的一些数据出现在用户B的数据中!此外,用户A的一些数据被破坏,可能会传输

我的移动应用程序Ionic 1中存在数据损坏,这是非常偶然的情况

该应用程序正在与登录到远程CouchDB服务器的用户协作。每个用户在服务器中都有自己的数据库。应用程序中一次只有一个会话,但用户a可能会使用该应用程序,然后注销,然后用户B登录以使用该应用程序

在本地,该应用程序有一个独特的PockDB,在登录时创建,然后与用户的远程couchDB实时同步,然后在注销时销毁

问题:在我无法重现的非常随机和不频繁的情况下,用户A的一些数据出现在用户B的数据中!此外,用户A的一些数据被破坏,可能会传输到B,不确定

所以,我想知道如果我在实时同步运行pookdb.replicate时调用pookdb.destroy,会发生什么情况,选项为{live:true,retry:true,continuous:true},两种方式都是:本地到远程和远程到本地。destroy正在采取措施彻底停止复制吗?如果不是,它可能会解释一些数据是从旧的本地A数据库传输到新的本地B数据库的。我曾试图浏览PockDB源代码,但在其中丢失了。我可以看到Replication.cancel是从它的onDestroy方法调用的,但不确定它是否能正确处理我的情况


非常感谢您的帮助

在复制过程中销毁数据库最安全的方法是首先调用cancel,然后等待完成事件。例如:

var sync=db.syncotherDB,{live:true,retry:true}; sync.on'complete',函数{ db.destroy.then/*…*/; }; /* ... */
sync.cancel;//将触发“完成”在复制过程中销毁数据库的最安全方法是首先调用cancel,然后等待完成事件。例如:

var sync=db.syncotherDB,{live:true,retry:true}; sync.on'complete',函数{ db.destroy.then/*…*/; }; /* ... */
sync.cancel;//一旦用户注销,会触发“完成”操作吗?你取消复制了吗?没有。我只是调用destroy,这显然会在复制时调用“cancel”,但不确定我会先尝试取消复制,然后销毁数据库。最糟糕的情况是:由于不再隐式调用cancel,代码变得更具可读性。最佳案例:你的问题解决了;当然可以,谢谢。但我几乎可以肯定,这只会让代码更具可读性。cancel方法只是将一个标志设置为true,所以我相信复制会在后台进行。也许更安全的方法是在触发取消后立即完成复制,但如果没有网络,这可能是无止境的。一旦用户注销,会发生什么?你取消复制了吗?没有。我只是调用destroy,这显然会在复制时调用“cancel”,但不确定我会先尝试取消复制,然后销毁数据库。最糟糕的情况是:由于不再隐式调用cancel,代码变得更具可读性。最佳案例:你的问题解决了;当然可以,谢谢。但我几乎可以肯定,这只会让代码更具可读性。cancel方法只是将一个标志设置为true,所以我相信复制会在后台进行。也许更安全的方法是在触发取消后立即完成复制,但如果没有网络,这可能是无止境的。非常感谢,我们将尝试这样做!您认为不这样做(即调用cancel+等待它完成)可以解释我的数据损坏问题吗?我已经做了几次测试,看起来它现在工作得更安全/更好了。很难100%确定,因为问题是随机的。我认为最重要的是,在破坏本地数据库之前,确保同步完成。我的superlogin配置中也有一个问题,端点没有包括:3000端口引用,导致注销失败。参见gitgub上的superlogin问题2。不知道这会有什么影响…非常感谢,我会试试的!您认为不这样做(即调用cancel+等待它完成)可以解释我的数据损坏问题吗?我已经做了几次测试,看起来它现在工作得更安全/更好了。很难100%确定,因为问题是随机的。我认为最重要的是,在破坏本地数据库之前,确保同步完成。我的superlogin配置中也有一个问题,端点没有包括:3000端口引用,导致注销失败。参见gitgub上的superlogin问题2。不确定这会对……产生什么影响。。。