react-native应用程序中的Realm.objects()返回空对象

时间:2020-03-25 05:59:41

标签: javascript android react-native realm

我正在领域中创建数据库,但是当我想使用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,而且我不知道我做的不好,希望您能为我解决问题。

2 个答案:

答案 0 :(得分:1)

所以我也有同样的问题。我可以按照以下步骤解决它:

  1. 将领域包升级到5.0.3 yarn upgrade realm

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

  3. 请按照https://realm.io/docs/javascript/latest/

  4. 顶部的说明验证链接是否正确进行
  5. 确保在Android / app / src / main / java / com / import io.realm.react.RealmReactPackage; / MainApplication.java中的MainApplication.java顶部添加此行-> <your-app-name>

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

**您不必这样做,只是以防万一...

  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. 进行清理
  3. 从项目的根目录npx react-native run-android

  4. 重新编译并再次运行

**如果出现类似以下错误:

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;
}

希望这会有所帮助! ?

答案 1 :(得分:0)

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