Realm.objects () в приложении реакции-родной возвращает пустые объекты - PullRequest
0 голосов
/ 25 марта 2020

Я создаю БД в области, но когда я хочу просмотреть данные с помощью Realm.objects (), вернуть пустые объекты, например: {"0": {}, "1": {}, "2 ": {} ... и т. д.}, мой код следующий:

import Realm from "realm";
const nombreEsquema = 'Imagen12';
class Imagen {}

let esquema = Imagen.schema = {
   name: nombreEsquema,
   properties: {
      nombre: {
         type: 'string'
      },
      uri: {
         type: 'string'
      },
      url: {
         type: 'string'
      },
   }
};

let dbRealm = Realm.open({
   schema: [esquema]
});

functionRealm() {
   dbRealm.then(realm => {
      realm.write(() => {
         realm.create(nombreEsquema, {
            nombre: 'David',
            url: 'My URL',
            uri: 'My URI'
         });
      });

      let images = realm.objects(nombreEsquema);
      console.log("------------------------------");
      for (let i of images) {
         console.log(i);
      }
   });
}

Я прочитал документацию области, но ничего с этой проблемой не вижу, моя версия области 5.0.2, и я не знаю, что я делаю плохо, я надеюсь, что вы можете помочь мне с моей проблемой.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Действительно, вы можете просто обновить область до 5.0.3, потому что в 5.0.2 * 1001 есть ошибка * См. В журнале релизов: https://github.com/realm/realm-js/releases/tag/v5.0.3

0 голосов
/ 07 апреля 2020

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

  1. Обновите пакет области до 5.0.3 yarn upgrade realm

  2. Выполните npx react-native link realm (Область еще не полностью поддерживает автоматическое связывание)

  3. Проверьте правильность связывания, следуя инструкциям вверху: https://realm.io/docs/javascript/latest/

  4. Обязательно добавьте эту строку -> import io.realm.react.RealmReactPackage; в начало вашего MainApplication. java в android / app / src / main / java / com / <your-app-name> / MainApplication. java

<---------------------------------- --- || ** Необязательно ** || ------------------------------------->

** Вы не должны Я должен сделать это, но только в случае ...

Проверьте список пакетов в android / app / src / main / java / com / <your-app-name> / MainApplication. java, чтобы убедиться, что он настроен следующим образом:
  @Override
  protected List<ReactPackage> getPackages() {
    @SuppressWarnings("UnnecessaryLocalVariable")
    List<ReactPackage> packages = new PackageList(this).getPackages();
    // Packages that cannot be autolinked yet can be added manually here, for example:
    // packages.add(new MyReactNativePackage());
+   packages.add(new RealmReactPackage()); // <-- This line adds in the realm package.
    packages.add(new RNSensitiveInfoPackage());
    return packages;
  }

перейдите в каталог / android и очистите его, запустив ./gradlew clean

Перекомпилируйте и снова запустите из каталога root вашего проекта npx react-native run-android

** Если вы получаете сообщение об ошибке, похожее на это:

Native module realm tried to override realm for module name realm. If this was your intention, set canOverrideExistingModule=true
  1. Открыть <your-app-name> / node_modules / realm / android / src /main/java/io/realm/react/RealmReactModule.java

  2. Добавьте следующие строки внутри класса RealmReactModule:

@Override
public boolean canOverrideExistingModule() {
  return true;
}

Надеюсь, это поможет! ?

...