If i have two related realm objects, e.g:
const PersonSchema = {
name: 'Person', properties: {name: 'string', cars: 'Car[]'},
};
const CarSchema = {
name: 'Car',
properties: {model: 'string', owner: {type: 'linkingObjects', objectType: 'Person', property: 'cars'}},
};
And i need to create a car and reference the owner directly without passing by the Person object and pushing the new created Car...
E.G:
realm.write(() => {
const car = realm.create('Car', {
model: 'Model name',
owner: ownerID
});
});
How can i link the owner object to the car directly instead of: owner.cars.push(car)
Any help PLZ !
I posted this as a comment and re-reading it, it's actually the answer so I hope it helps future readers.
Lists are a one to many relationship of managed objects and the list is stored as a managed property of the parent object.
LinkingObjects on the other hand is more of a "computed property"; their contents are not managed or stored on disk - their values are pulled from existing managed objects in more of a live fashion - similar in concept to a computed property.
e.g. when an object that has a LinkingObjects property is added to a list, its linkingObjects property automagically has a reference to that parent object
So 'adding' an object directly to a LinkingObjects is not possible.
There may be other options though - creating a back link property may be one option - that would allow a one-to-many forward relationship and one to one back relationship. However, the relationship has to be manually managed and the car could only belong to one person. Some pseudo code
This setup would allow a person to be added to a Car at any time, keeping in mind that the person won't have a List of their cars until the car is then added to that persons
Car[]
list manually. That being said, it could be queriedbut a List is much more convenient.