React Native MongoDB领域-如何在一对多关系中创建对象?

zbdgwd5y  于 2023-03-24  发布在  React
关注(0)|答案(1)|浏览(148)

React Native MongoDB Realm数据库
doc解释了如何创建一对多关系模式,如下所示:

const Person = {
  name: "Person",
  properties: {
    name: "string",
    birthdate: "date",
    dogs: "Dog[]"
  }
};

const Dog = {
  name: "Dog",
  properties: {
    name: "string",
    age: "int",
    breed: "string?"
  }
};

但是我没有看到它解释如何在数据库中添加属于一个人的狗对象。一个人应该以某种方式指定。
我使用的是Realm React,所以狗的创建代码看起来像这样:

person1: Person =  ...

realm.write(() => {
   return  new Dog(realm, dogFields);
});

如果我在数据库中已经有了一个person1,如何修改这段代码,使person1成为这只新创建的狗的所有者。

6ljaweal

6ljaweal1#

这是一个很好的概念性问题,我认为这可以在一个高层次上解决。
首先使用Person对象的一些伪代码,该对象具有名称、狗列表和Dog对象。

Person {
  name = ""
  dogs = List of dogs
}

Dog {
  name = ""
}

从概念上讲,如果在代码中示例化Person

let p = Person()

然后是一只狗

let d = Dog()

然后将狗添加到Personsdogs属性中,

p.dogs.add(d)

当Person在一个写事务中被写到Realm时,狗也会被写到Realm!这有多酷?

realm.write {
   realm.add(p) //the person and its dog is added; both objects are written
}

另一个例子是,如果在现有的person中有一个已经被写入的对象,当它被读入并且新的狗被添加到person中时(在一个写事务中),它们将被添加到person列表中,并且也被作为单独的对象写入
最后,如果已经写入了Person和Dogs,如果读入了一个人,然后读入了一只狗,当在写事务中将狗添加到Person Dog属性时,它将只更新人,因为狗已经存在。

相关问题