我在 React Native 中有一个构建良好的应用程序,它在网络和移动平台上都运行良好。除了一件事
我总是必须评论其中一个导入
import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs';
或者
import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite';
取决于我必须运行它的平台。
我什至可以有条件地导入,但问题是我无法更改导出声明的结果,即
export { database }
查看文件的完整代码
import { Database } from '@nozbe/watermelondb';
import { DbModels, DbSchema } from './schema';
let mowebDb = 'moweb';
// import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs';
// let adapter = new LokiJSAdapter({
// schema: DbSchema,
// dbName: mowebDb,
// useWebWorker: false,
// useIncrementalIndexedDB: true,
// })
import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite';
let adapter = new SQLiteAdapter({
dbName: mowebDb,
schema: DbSchema,
});
const database = new Database({
adapter,
actionsEnabled: true,
modelClasses: DbModels,
});
export { database }
我可以添加一个条件而不是注释行,以产生与下面相同的结果吗?
为了在有条件导入的同时保持导出一致,请尝试在异步函数内进行动态导入,然后根据平台设置适配器。不幸的是,这种方法将返回一个 Promise,而不是一个简单的对象。要解决此问题,您可以在异步函数内初始化数据库,并确保所有数据库操作等到初始化完成。它不像直接导出那么干净,但它允许条件逻辑,同时保持模块导出内容的一致性。请记住,React Native 可能需要特定的设置才能使动态导入顺利工作。