Arsen Alexanyan
Arsen Alexanyan

Reputation: 3141

Realm React Native: How remove element from object's nested array with some condition

I am new in React native and trying to integrate Realm as a client side DB. I have 2 schemas:

export const CAR_SCHEMA = {
  name: 'Car',
  properties: {
    color: 'string',
    model: 'string',
  }
};

export const PERSONS_SCHEMA = {
  name: 'Person',
  primaryKey: 'id',
  properties: {
    id: 'int',
    firstName: 'string',
    lastName: 'string'
    cars: 'Cars[]'
  }
};

My question basically means how to remove 'Car' from 'Person' where Car.model='Honda'? I couldn't find any documentation about deleting element from object's nested array.

Upvotes: 1

Views: 3489

Answers (1)

EpicPandaForce
EpicPandaForce

Reputation: 81568

Remove from array but keep item in Realm:

realm.write(() => {
    let person = realm.objectForPrimaryKey('person', personId);
    let carsOfPerson = person.cars;

    var i = carsOfPerson.length - 1;
    while(i >= 0) {
        if(carsOfPerson[i].model == "Honda") {
            carsOfPerson.splice(i, 1);
        }
        i--;
    }
});

Remove from array by deleting item from Realm:

realm.write(() => {
    let person = realm.objectForPrimaryKey('person', personId);
    let carsOfPerson = person.cars;
    let hondasOfPerson = carsOfPerson.filtered('model = "HONDA"')
    realm.delete(hondasOfPerson)
});

Upvotes: 11

Related Questions