CRUD - React Native SDK
이 페이지의 내용
RealmProvider
내에서 useRealm()
훅을 사용하여 영역 에 액세스 할 수 있습니다. 그런 다음 Realm을 사용하여 Realm 객체를 만들 수 있습니다. 쓰기 (write)() 트랜잭션 차단.
쓰기 트랜잭션( 쓰기 트랜잭션 (write transaction) ) 내의 모든 작업은 원자적 입니다. . 쓰기 트랜잭션( 쓰기 트랜잭션 (write transaction) )의 작업이 실패하면 전체 트랜잭션 이 실패하고 Realm 에서 오류가 발생하며 트랜잭션 차단 의 변경 사항이 영역 에 적용되지 않습니다.
모든 쓰기 작업은 쓰기 트랜잭션(write transaction)에서 발생해야 합니다.
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' /> </> ); };
트랜잭션 수명 주기
주어진 영역은 한 번에 하나의 쓰기 트랜잭션(write transaction)만 처리합니다. 쓰기 트랜잭션(write transaction)을 생성하면 영역이 해당 트랜잭션을 대기열에 추가합니다. 영역은 각 트랜잭션이 도착한 순서대로 평가합니다.
트랜잭션을 처리한 후 Realm은 트랜잭션을 커밋하거나 취소합니다.
커밋 후 영역은 트랜잭션의 모든 작업을 적용합니다. 적용되면 영역이 자동으로 실시간 쿼리를 업데이트합니다. 수신기에 생성, 수정 및 삭제된 객체를 알립니다.
Sync 를 사용하는 경우 SDK는 Atlas App Services에 보낼 변경 사항도 대기열에 추가합니다. SDK는 네트워크를 사용할 수 있을 때 이러한 변경 사항을 전송합니다.
커밋 후
useQuery
또는useObject
에서 반환된 객체 및 컬렉션이 관련 변경 내용을 포함하도록 다시 렌더링합니다.
Realm은 취소된 트랜잭션에 어떤 작업도 적용하지 않습니다. 작업이 실패하거나 유효하지 않은 경우 Realm은 트랜잭션을 취소합니다.