如何在执行备份后重新打开已关闭的域数据库?

时间:2018-02-16 13:38:12

标签: javascript react-native promise realm

我正在使用带有react native的域数据库。我有一个文件realm.js,我在那里定义我的领域架构和数据库的存储路径:

import Realm from 'realm';
import RNFS from 'react-native-fs'

class Test extends Realm.Object {}
Test.schema = {
    name: 'Test',
    primaryKey: 'id',
    properties: {
        id: {type: 'string', optional: false},
        ...,
    },
};

export default new Realm({schema: [Test],
                          path: RNFS.DocumentDirectoryPath + "/t_db.realm"});

我通过导入使用此域:import realm from './realm',例如:this.query = realm.objects('Test').sorted('id');

在我的应用程序中,我想实现一个备份功能,其中域db被复制到外部用户存储。因此我使用具有此功能的React Native Filesystem:

import realm from './realm'
import RNFS from 'react-native-fs'

backup() {
  console.log("path ", realm.path)
  realm.close()
  console.log("closed ", realm.isClosed)
  RNFS.copyFile(realm.path, RNFS.ExternalDirectoryPath + "/t_db.realm")
  console.log("copied")
  realm.open()
}

我的console.logs表明我正在成功复制数据库但我无法重新打开它。此时抛出以下错误:

  

ReactNativeJS:undefined不是函数(评估'_realm2.default.open()')

当我试图等待副本完成时:

RNFS.copyFile(realm.path, RNFS.ExternalDirectoryPath + "/t_db.realm")
.then(() => {
  console.log("copied")
  realm.open()
})

我在console.log(“复制”)之后收到以下错误:

  

ReactNativeJS:'未处理的承诺拒绝',{[TypeError:undefined不是函数(评估'_realm2.default.open()')]

任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案