有关https://medium.com/google-developers/understanding-migrations-with-room-f01e04b07929
的房间迁移的精彩文章但是,我仍然想念Room中的“灾难”恢复机制(即类似于fallbackToDestructiveRecreationOnMigrationError(),当发生奇怪的事情时会清除并重新创建数据库)
以下是我们发生的事情:
一个dev推送版本9带有迁移,但架构9.json不符合(这怎么可能我不知道)=>房间做了迁移,没有错误。
然后,当我们提供版本10时,文件9.json已更改=>房间崩溃,用户无法再访问该应用程序(这是正常的)。
我们不得不告诉用户擦除他们的数据(这不是技术问题,因为我们在应用启动时重新同步数据库,但这是一个公共关系问题)
我认为应该可以在构建器中使用openHelperFactory,但这对于我来说很深入到室内:(
答案 0 :(得分:2)
经过无数次尝试和绝望,这是我使用的解决方案:
var Minizip = require('minizip-asm.js');
var fs = require("fs");
var mz = new Minizip();
var image = fs.readFileSync('./1.jpg');
var text = new Buffer("Abc~~~");
mz.append("haha/abc.txt", text, {password: "123"});
mz.append("haha/abc2.jpg", image, {password: "123"});
fs.writeFileSync("abc.zip", new Buffer(mz.zip()));
此解决方案的真正缺点是,对db的首次访问是在主线程上完成的。
如果有人有更好的解决方案,请分享!