LinkingObjects в реагирующей нативной сфере - PullRequest
0 голосов
/ 12 февраля 2020

В настоящее время я пытаюсь получить базу данных Realm для моего работающего приложения, но я не могу создать ссылку между двумя объектами.

Я могу выбрать объекты, я могу создать отдельные объекты, но я не могу связать два объекта вместе

Я следовал документации, в частности, я смотрю на создание Обратные отношения

class PersonSchema {
  public static schema: Realm.ObjectSchema = {
    name: 'Person',
    primaryKey: 'id',
    properties: {
      id: 'string',
      username: 'string',
      dogs: 'Dog[]',
      },
   };
 }
class DogSchema {
  public static schema: Realm.ObjectSchema = {
    name: 'Dog',
    primaryKey: 'id',
    properties: {
      id: 'string',
      name: 'string',
      owner: {type: 'linkingObjects', objectType: 'Person', property: 'dogs'},
    },
  };
}

Я открываю свой Царство с обеими схемами

  componentDidMount() {
    Realm.open({
      schema: [PersonSchema.schema, DogSchema.schema],
      deleteRealmIfMigrationNeeded: true,
    }).then(realm => {
      this.setState({realm});
    });
  }

Одна вещь, которую я попробовал, была следующей:

createPerson = () => {
    const id = uuid();
    const personenName = 'Steve ' + id;
    const realm = this.state.realm;
    if (realm) {
      realm.write(() => {
        const dog = realm.create('Dog', {
          id,
          name: 'Bello ' + id,
        });
        const dogs = realm.objects('Dog');
        const person = realm.create('Person', {
          id,
          username: personenName,
          dogs: [],
        });
        const persons = realm.objects('Person');
        person.dogs.push(dog);
      });
    }
  };

Но я также пытался связать Пса с Человеком. Я попытался создать собаку и в этом призыве создать для него персона, и наоборот ... Все попытки выдают ошибку. Приведенный выше код просто замораживает приложение.

Как правильно связать два объекта вместе?

Для моего приложения я хочу связать материал с пользователем, чтобы я мог быстрее его найти.

...