#reactjs #electron #rxdb
#reactjs #electron #rxdb
Вопрос:
Случай
Как открыть существующую базу данных?
Проблема
Я уже создаю одну базу данных с помощью RxDB.create() и создал несколько коллекций, поместил в нее некоторые документы, поэтому в другом сценарии я хочу открыть эту базу данных для выполнения некоторых запросов, но я не знаю, как это сделать. Я пытался использовать RxDB.create() с тем же именем базы данных, но он создает новую базу данных и переопределяет созданную базу данных выше.
Пример кода
const database = await createRxDatabase({
name: path.join(app.getPath('userData') '/db'),
adapter: leveldown, // the full leveldown-module
multiInstance: false,
});
Я просто не вижу подходящего способа проверить, существует ли файл .ldb и как получить ссылку на объект базы данных rxdb без создания нового.
Информация
Окружающая среда: Electron
Адаптер: LevelDB
Стек: реагировать
Пакеты: «rxdb»: «9.5.0», «leveldown»: «5.6.0», «pouchdb-adapter-leveldb»: «7.2.2»
Комментарии:
1. Эта ошибка произошла со мной, потому что по какой-то причине я несколько раз вызывал этот фрагмент кода в своем приложении. Вы уверены, что вызываете это только один раз?
Ответ №1:
слишком поздно, но стоит поделиться, потому что слишком мало ссылок на rxdb
найден обходной путь для react-native (iOS / Android) (rxdb 11.6.0)
у меня отлично работает, и данные по-прежнему сохраняются
// database instance to be used throughout the runtime
let rxDB: RxDatabase<AppCollections>;
async function createRxDatabaseAsync() {
// re-create RxDatabase by using the function below
// does not override existing data
rxDB = await createRxDatabase<AppCollections>({
name: 'mydatabase',
storage: getRxStoragePouch('react-native-sqlite'),
ignoreDuplicate: false,
});
}
export async function initRxDatabaseAsync() {
if (!rxDB) {
await createRxDatabaseAsync();
}
// make sure we add the collection(s) only one time
// my case is 'word' collection
if (!rxDB.word) {
await rxDB.addCollections({
word: {
schema: wordSchema,
},
});
}
return rxDB;
}