繁体   English   中英

反应原生应用程序中的 Realm.objects() 返回空对象

[英]Realm.objects() in react-native app return empty objects

我正在领域中创建一个数据库,但是当我想用 Realm.objects() 查询数据时返回空对象,如下所示:{"0":{},"1":{},"2":{ }...etc},我的代码是下一个:

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,而且我不知道自己在做什么,我希望您能帮助我解决我的问题。

所以我也有同样的问题。 我能够通过以下步骤解决它:

  1. 升级realm包到5.0.3yarn yarn upgrade realm

  2. 运行npx react-native link realm (Realm 还不完全支持自动链接)

  3. 按照以下顶部的说明验证链接是否正确发生: https : //realm.io/docs/javascript/latest/

  4. 确保添加这一行 --> import io.realm.react.RealmReactPackage; 到 android/app/src/main/java/com/ <your-app-name> /MainApplication.java 中 MainApplication.java 的顶部

<------------------------------------- || **可选** || ------------------------------------->

**你不应该这样做,但只是以防万一......

  1. 检查 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;
  }
  1. cd 进入 /android 目录并通过运行./gradlew clean

  2. 从你的项目根目录重新编译并再次运行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;
}

希望这可以帮助! 🙂

确实,您可以将领域升级到 5.0.3,因为 5.0.2 上存在错误
查看发布日志: https : //github.com/realm/realm-js/releases/tag/v5.0.3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM