реагировать на собственную ошибку при открытии области на нескольких экранах - PullRequest
0 голосов
/ 02 марта 2019

У меня есть вопрос, касающийся создания и использования базы данных области в реактивном режиме.

У меня есть два экрана, отвечающих за выполнение таких операций, как crud, category.js и client.js

В category.js у меня есть следующий конструктор

constructor(props) {
    super(props);
    realm = new Realm({
        schema: [{ name: 'category', primaryKey: 'id', properties: { id: 'int', descricao: 'string', status: 'bool' } }]
    })
}

и в cliente.js У меня

constructor(props) {
    super(props);
    realm = new Realm({
        schema: [{ name: 'client', primaryKey: 'id', properties: { id: 'int', nome: 'string', cpf: 'string', celular: 'string', status: 'bool' } }]
    })
}

Теперь у меня есть следующие сомнения:

с этой рассматриваемой схемой, есть ли у меня база данных, где у меня есть категории таблиц и клиенты?

, когда я нахожусь на экране client.jsи я хочу перейти к category.js, я получаю сообщение об ошибке: уже открыт в текущем потоке с другой схемой.

как я могу закрыть соединение или открыть, чтобы я мог использовать область на обоих экранах

1 Ответ

0 голосов
/ 03 марта 2019

Вы не открываете realm на новом экране, пытаетесь создать новый экземпляр.Вот почему у вас есть проблемы.В вашем приложении должен быть только один экземпляр realm.

  1. Создайте один файл, в который вы импортируете зависимость realm.
  2. Создайте всю необходимую схему вэтот файл.
  3. Создайте экземпляр new Realm() и добавьте в него свою схему
  4. Экспортируйте новый экземпляр realm.
  5. Вместо использования realm в ваших компонентах используйте ваш экземпляр realm, который вы только что создали.

realm.js

import Realm from 'realm';

class Category extends Realm.Object {}
Category.schema = {
  name: 'category',
  primaryKey: 'id',
  properties: {
    id: 'int',
    descricao: 'string',
    status: 'bool'
  }
};

class Client extends Realm.Object {}
Client.schema = {
  name: 'client',
  primaryKey: 'id',
  properties: {
    id: 'int',
    nome: 'string',
    cpf: 'string',
    celular: 'string',
    status: 'bool'
  }
};

const RealmInstance = new Realm({ schema: [Category, Client] });
export default RealmInstance;

Тогда вы сможете импортировать его следующим образом

import realm from './path/to/realm.js'

Вы можете увидеть, как realm делаетэто, посмотрев на их пример .

...