expo sqlite 使用现有数据库

Fab*_*ioG 10 javascript sqlite react-native expo

根据 react-native 的 expo sqlite 文档,我可以像这样初始化一个数据库:

const db = SQLite.openDatabase('db.db');
Run Code Online (Sandbox Code Playgroud)

这有效,我可以像这样更新数据库:

  update() {
    db.transaction(tx => {
      tx.executeSql(
        `select * from items where done = ?;`,
        [this.props.done ? 1 : 0],
        (_, { rows: { _array } }) => this.setState({ items: _array })
      );
    });
  }
Run Code Online (Sandbox Code Playgroud)

根据我有限的理解,这会在设备中创建一个数据库。然后它被操纵保持所有的数据库本地。

我有一个数据库,其中已经设置了所有必要的表。我如何让它使用我已经设置的当前数据库?

例如:(不正确的语法)

const db = SQLite.openDatabaseIShipWithApp('mypath/mydb.db');
Run Code Online (Sandbox Code Playgroud)

我找不到任何文档来帮助我解决这个问题。我上面提到的唯一原因是因为我已经有了包含表和数据的数据库。

任何帮助,将不胜感激!

Fab*_*ioG 9

我能够通过使用 expo 的 FileSystem.downloadAsync 来实现这一点:

首先我导入它,因为我使用的是博览会托管应用程序:

import { FileSystem } from 'expo';
Run Code Online (Sandbox Code Playgroud)

然后我从服务器下载它,如下所示:

// load DB for expo
FileSystem.downloadAsync(
  'http://example.com/downloads/data.sqlite',
  FileSystem.documentDirectory + 'data.sqlite'
)
.then(({ uri }) => {
  console.log('Finished downloading to ', uri)
})
.catch(error => {
  console.error(error);
})
Run Code Online (Sandbox Code Playgroud)

第一个参数是位置的 uri,第二个参数是我想要放置它的位置。这里我使用的是 documentDirectory。