实现简单关系模型(嵌套对象)的插入



我试图将我的想法从理性数据库转移到领域,但我有一个小问题。

我有 2 个数据模型:

Station.schema = {

name: 'Station',
primaryKey: 'id',
properties:{
    id:    'int',    // primary key
    stationName : {type: 'string'},
    stationType : {type:'StationType'}       
} 

}

StationType.schema = {

name: 'StationType',
primaryKey: 'id',
properties:{
    id:    'int',    // primary key
    typeName : {type: 'string'},
} 

}

我试图插入对象"站"的新记录,该记录具有名为"站类型"的对象属性。stationType 对象预先填充了固定值。

每当我执行对象"Station"的插入时,它都会尝试插入已经存在的"stationType"属性的值。

如何防止插入对象属性?我只希望"stationType"属性指向"StationType"模型中的记录。

谢谢

尤瓦尔

如何防止插入对象属性?

您不需要阻止它,因为如果您为 realm.create() 指定true参数,那么如果它存在,它将尝试更新它而不是创建它。

realm.write(() => {
  // Create a book object
  realm.create('Book', {id: 1, title: 'Recipes', price: 35});
  // Update book with new price keyed off the id
  realm.create('Book', {id: 1, price: 55}, true); // <-- true
});

如果不想更新它,则需要查询托管对象,并根据需要修改事务中的托管对象。

编辑:

如果您的托管对象已经由 realm.create() 创建,则可以像这样查询它

realm.write(() => {
    let book = realm.objects('Book').filtered('bookId == ' + bookId)[0];
    if(book == null) {
        book = realm.create('Book', {id: 1, title: 'Recipes');
    }
    let author = realm.objects('Author').filtered('authorId == ' + authorId)[0];
    book.author = author; // sets the field for the managed object
}

相关内容

  • 没有找到相关文章

最新更新