Dentro de un RealmProviderPuedes acceder a un reino con el gancho useRealm(). Luego, puedes crear objetos de reino usando un Bloque de transacciónRealm.write().
Todas las operaciones dentro de una transacción de escritura son atómicasSi falla una operación en la transacción de escritura, falla toda la transacción, Realm genera un error y no se aplican cambios del bloque de transacción al reino.
Cada operación de escritura debe ocurrir en una transacción de escritura.
const CreatePersonInput = () => { const [name, setName] = useState(''); const realm = useRealm(); const handleAddPerson = () => { realm.write(() => { realm.create('Person', {_id: PERSON_ID, name: name, age: 25}); }); }; return ( <> <TextInput value={name} onChangeText={setName} /> <Button onPress={() => handleAddPerson()} title='Add Person' /> </> ); };
Ciclo de vida de la transacción
Un dominio determinado solo procesa una transacción de escritura a la vez. Al realizar una transacción de escritura, el dominio la añade a una cola. El dominio evalúa cada transacción en el orden en que llega.
Después de procesar una transacción, Realm la confirma o la cancela:
Tras una confirmación, el dominio aplica todas las operaciones de la transacción. Una vez aplicadas, actualiza automáticamente las consultas activas. Notifica a los oyentes sobre la creación, modificación y eliminación de objetos.
Al usar Sync, el SDK también pone en cola los cambios para enviarlos a Atlas App Services. El SDK envía estos cambios cuando hay una red disponible.
Después de una confirmación, los objetos y colecciones devueltos por
useQueryouseObjectse vuelven a renderizar para incluir los cambios relevantes.
Realm no aplica ninguna operación en una transacción cancelada. Realm cancela una transacción si una operación falla o no es válida.