Bird
Raised Fist0
React Nativemobile~20 mins

Realm database in React Native - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Realm Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
What is the output of this Realm query code?
Given a Realm database with a schema for Task objects having a completed boolean field, what will be the length of completedTasks after running this code?
React Native
const realm = await Realm.open({schema: [{name: 'Task', properties: {name: 'string', completed: 'bool'}}]});
realm.write(() => {
  realm.create('Task', {name: 'Buy milk', completed: true});
  realm.create('Task', {name: 'Walk dog', completed: false});
  realm.create('Task', {name: 'Read book', completed: true});
});
const completedTasks = realm.objects('Task').filtered('completed == true');
console.log(completedTasks.length);
A3
B0
C1
D2
Attempts:
2 left
💡 Hint
Count how many tasks have completed set to true.
❓ lifecycle
intermediate
2:00remaining
What happens if you forget to close a Realm instance in React Native?
In React Native, if you open a Realm instance but do not call realm.close() when the component unmounts, what is the likely outcome?
React Native
import React, {useEffect} from 'react';
import Realm from 'realm';

export default function MyComponent() {
  useEffect(() => {
    Realm.open({schema: [{name: 'Note', properties: {text: 'string'}}]}).then(realm => {
      // Use realm
    });
    // No realm.close() called
  }, []);
  return null;
}
AMemory leak and possible app crash due to open Realm instances.
BRealm data will be lost immediately.
CApp will throw a syntax error at runtime.
DRealm automatically closes when component unmounts, no issues.
Attempts:
2 left
💡 Hint
Think about resource management and cleanup in apps.
📝 Syntax
advanced
2:00remaining
Which option correctly defines a Realm schema with a primary key?
You want to define a Realm schema for a User model with id as primary key and name as string. Which option is correct?
Aconst UserSchema = {name: 'User', primaryKey: 'id', properties: {id: 'int', name: 'string'}};
Bconst UserSchema = {name: 'User', properties: {id: 'int', name: 'string', primaryKey: 'id'}};
Cconst UserSchema = {name: 'User', properties: {id: 'int', name: 'string'}, primaryKey: 'id'};
Dconst UserSchema = {name: 'User', properties: {id: 'int', name: 'string'}, primary_key: 'id'};
Attempts:
2 left
💡 Hint
Check the correct placement and spelling of primaryKey in schema object.
❓ navigation
advanced
2:00remaining
What is the effect of this Realm write transaction in React Native?
Consider this code snippet inside a React Native app using Realm. What will be the value of task.completed after this write?
React Native
const realm = await Realm.open({schema: [{name: 'Task', properties: {name: 'string', completed: 'bool'}}]});
realm.write(() => {
  let task = realm.create('Task', {name: 'Clean house', completed: false});
  task.completed = true;
});
const task = realm.objects('Task').filtered('name == "Clean house"')[0];
console.log(task.completed);
Afalse
Btrue
Cundefined
DThrows an error
Attempts:
2 left
💡 Hint
Think about how Realm transactions update objects.
🔧 Debug
expert
2:00remaining
Why does this Realm query throw an error?
This code throws an error when running the filtered query. What is the cause?
React Native
const realm = await Realm.open({schema: [{name: 'Person', properties: {name: 'string', age: 'int'}}]});
realm.write(() => {
  realm.create('Person', {name: 'Alice', age: 30});
});
const results = realm.objects('Person').filtered('age > "25"');
AFiltering with a string "25" instead of a number causes a type error.
BThe schema is missing a primary key, causing query failure.
CThe write transaction is missing a commit call.
DRealm does not support comparison operators in filtered queries.
Attempts:
2 left
💡 Hint
Check the data types used in the filter expression.

Practice

(1/5)
1. What is the primary purpose of using Realm database in a React Native app?
easy
A. To handle app navigation between screens
B. To store data locally on the device for fast access
C. To style the app's user interface
D. To connect the app to a remote SQL server

Solution

  1. Step 1: Understand Realm's role

    Realm is a local database designed to store data on the device itself.
  2. Step 2: Compare options

    Options A, B, and C describe unrelated functions like navigation, remote servers, and UI styling, which Realm does not handle.
  3. Final Answer:

    To store data locally on the device for fast access -> Option B
  4. Quick Check:

    Realm = local data storage [OK]
Hint: Realm is for local data, not UI or navigation [OK]
Common Mistakes:
  • Confusing Realm with remote databases
  • Thinking Realm manages UI or navigation
  • Assuming Realm is a cloud service
2. Which of the following is the correct way to define a Realm schema for a Task object with a string name and a boolean completed property?
easy
A. const TaskSchema = {name: 'Task', properties: {name: 'string', completed: 'bool'}};
B. const TaskSchema = {name: 'Task', properties: {name: 'string', completed: 'boolean'}};
C. const TaskSchema = {name: 'Task', properties: {name: 'String', completed: 'Bool'}};
D. const TaskSchema = {name: 'Task', properties: {name: String, completed: Boolean}};

Solution

  1. Step 1: Check Realm property types

    Realm expects property types as lowercase strings like 'string' and 'bool'.
  2. Step 2: Compare options

    const TaskSchema = {name: 'Task', properties: {name: 'string', completed: 'bool'}}; uses correct lowercase strings. Options A, C, and D use incorrect types or JavaScript types instead of strings.
  3. Final Answer:

    const TaskSchema = {name: 'Task', properties: {name: 'string', completed: 'bool'}}; -> Option A
  4. Quick Check:

    Property types are lowercase strings [OK]
Hint: Use lowercase strings for property types in schema [OK]
Common Mistakes:
  • Using JavaScript types instead of strings
  • Capitalizing type names incorrectly
  • Omitting the 'properties' key
3. Given the following code snippet, what will be the output of console.log(tasks.length);?
const realm = await Realm.open({schema: [TaskSchema]});
realm.write(() => {
  realm.create('Task', {name: 'Buy milk', completed: false});
  realm.create('Task', {name: 'Walk dog', completed: true});
});
const tasks = realm.objects('Task');
console.log(tasks.length);
medium
A. 0
B. 1
C. 2
D. Undefined

Solution

  1. Step 1: Analyze write transaction

    Two Task objects are created inside the write block, so two entries are added.
  2. Step 2: Check objects query

    realm.objects('Task') returns all Task objects, so length should be 2.
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    Created 2 tasks, length = 2 [OK]
Hint: Count created objects inside write block [OK]
Common Mistakes:
  • Forgetting to use write block for create
  • Assuming objects() returns empty before commit
  • Confusing length with undefined
4. What is wrong with this Realm write transaction code? (Assume the TaskSchema defines name as the primary key)
realm.write(() => {
  realm.create('Task', {name: 'Read book', completed: false});
});
realm.write(() => {
  realm.create('Task', {name: 'Read book', completed: true});
});
medium
A. The second create will throw an error because a Task with the same primary key already exists
B. You cannot call realm.write() more than once
C. The second create will update the existing object automatically
D. There is no error; this code works fine

Solution

  1. Step 1: Check schema requirements

    With name as primary key, creating an object with the same primary key without update flag causes error.
  2. Step 2: Analyze code behavior

    The first create succeeds. The second create uses the same name (primary key) without update flag, so it throws an error.
  3. Final Answer:

    The second create will throw an error because a Task with the same primary key already exists -> Option A
  4. Quick Check:

    Duplicate primary key without update flag causes error [OK]
Hint: Use primary key and update flag to avoid create errors [OK]
Common Mistakes:
  • Assuming multiple writes are forbidden
  • Thinking create auto-updates without flags
  • Ignoring primary key requirements
5. You want to update the completed status of a Task object named 'Laundry' to true. (Assume the Task schema defines name as the primary key) Which code snippet correctly performs this update in Realm?
hard
A. realm.write(() => { realm.objects('Task').filtered('name == "Laundry"').completed = true; });
B. realm.write(() => { realm.create('Task', {name: 'Laundry', completed: true}); });
C. realm.write(() => { realm.update('Task', {name: 'Laundry', completed: true}); });
D. realm.write(() => { realm.create('Task', {name: 'Laundry', completed: true}, true); });

Solution

  1. Step 1: Understand update with create

    Realm updates existing objects if you pass true as the third argument to create.
  2. Step 2: Check each option

    realm.write(() => { realm.create('Task', {name: 'Laundry', completed: true}, true); }); uses true flag correctly. realm.write(() => { realm.create('Task', {name: 'Laundry', completed: true}); }); tries to create without update flag, causing error. realm.write(() => { realm.objects('Task').filtered('name == "Laundry"').completed = true; }); tries to assign directly to filtered results, which is invalid. realm.write(() => { realm.update('Task', {name: 'Laundry', completed: true}); }); uses a non-existent update method.
  3. Final Answer:

    realm.write(() => { realm.create('Task', {name: 'Laundry', completed: true}, true); }); -> Option D
  4. Quick Check:

    Use create with true flag to update [OK]
Hint: Use true flag in create to update existing objects [OK]
Common Mistakes:
  • Forgetting the update flag for updates
  • Trying to assign directly to query results
  • Using non-existent Realm methods
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard