You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Realm 11.0.0中Embedded Objects无法使用求助

React Native Realm 11.0.0 嵌入式对象创建报错解决:Embedded objects cannot be created directly

错误原因

嵌入式对象(Embedded Object)的核心特性是必须依附父对象存在,不能独立创建。你当前代码先单独调用realm.create(Task, ...)生成Task实例,再关联到Project的写法,违反了Realm对嵌入式对象的约束,因此触发报错。

修复方案

直接在创建父对象(Project)时,将嵌入式对象(Task)的数据作为父对象属性的一部分传入,让Realm自动完成嵌入式对象的创建与关联。

修改后的完整代码

import React from "react";
import { View, Text } from "react-native";
import Realm from "realm";

export class Project extends Realm.Object<Project> {
  public _id: number;
  public name: string;
  public tasks: Realm.List<Task>;

  static schema = {
    name: "Project",
    primaryKey: "_id",
    properties: {
      _id: "int",
      name: "string",
      tasks: { type: "list", objectType: "Task" },
    },
  };
}

export class Task extends Realm.Object<Task> {
  public description: string;

  static schema = {
    name: "Task",
    embedded: true, // 保持开启状态
    properties: {
      description: "string",
    },
  };
}

(async () => {
  let realm: any;

  try {
    realm = await Realm.open({
      inMemory: true,
      schema: [Project, Task],
    });
  } catch (e) {
    console.error(e.message);
  }

  try {
    realm.write(() => {
      // 直接在创建Project时传入tasks的数据,无需单独创建Task实例
      realm.create(Project, {
        _id: 1,
        name: "P1",
        tasks: [
          { description: "T1" },
          { description: "T2" }
        ],
      });
    });
  } catch (e) {
    console.error(e.message);
  }

  console.log(JSON.stringify(realm.objects(Project), null, 3));

  realm.close();
})();

export const App = () => {
  return (
    <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
      <Text style={{ fontSize: 25 }}>Please look at the console</Text>
    </View>
  );
};

关键修改点

  • 删除单独调用realm.create(Task, ...)生成Task实例的代码
  • 在创建Project的realm.create调用中,直接在tasks字段传入Task的数据对象数组,Realm会自动将这些数据转化为嵌入式Task对象并关联到Project上

修改后嵌入式对象即可正常工作,控制台会输出包含tasks列表的Project数据。

内容的提问来源于stack exchange,提问作者u2gilles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:17:01