---
title: "How do you add, get, update, and delete records?"  
description: "How do you add, get, update, and delete records?"  
author: "Manish Sharma"  
published: 2025-07-02  
updated: 2025-07-07  
canonical: https://www.mindstick.com/interview/34306/how-do-you-add-get-update-and-delete-records  
category: "database"  
tags: ["database", "indexeddb"]  
reading_time: 4 minutes  

---

# How do you add, get, update, and delete records?

We'll [assume a database](https://www.mindstick.com/interview/34295/demonstrate-how-to-use-indexeddb-with-promises) `UserDB` with an object store named `users` and `keyPath: "id"`.

## Setup (once)

```javascript
const request = indexedDB.open("UserDB", 1);

request.onupgradeneeded = function (event) {
    const db = event.target.result;
    if (!db.objectStoreNames.contains("users")) {
        db.createObjectStore("users", { keyPath: "id" });
    }
};
```

## Add a Record

```javascript
function addUser(db, user) {
    const tx = db.transaction("users", "readwrite");
    const store = tx.objectStore("users");
    store.add(user); // Must contain a unique "id"
}
```

## Example usage:

```javascript
addUser(db, { id: 1, name: "Alice", email: "alice@example.com" });
```

## Get a Record by Key

```javascript
function getUser(db, id) {
    return new Promise((resolve, reject) => {
        const tx = db.transaction("users", "readonly");
        const store = tx.objectStore("users");
        const request = store.get(id);

        request.onsuccess = () => resolve(request.result);
        request.onerror = () => reject(request.error);
    });
}
```

## Usage:

```javascript
getUser(db, 1).then(user => console.log(user));
```

## Update a Record

You use `put()` instead of `add()` — it replaces the object with the same key:

```javascript
function updateUser(db, updatedUser) {
    const tx = db.transaction("users", "readwrite");
    const store = tx.objectStore("users");
    store.put(updatedUser); // Replaces if id exists
}
```

## Example:

```javascript
updateUser(db, { id: 1, name: "Alice Smith", email: "alice@example.com" });
```

> 💡 `put()` will add a new record if the key doesn't exist — unlike `add()` which throws an error if the key exists.

## Delete a [Record](https://www.mindstick.com/interview/34303/what-is-a-keypath-and-how-is-it-used-in-indexeddb)

```javascript
function deleteUser(db, id) {
    const tx = db.transaction("users", "readwrite");
    const store = tx.objectStore("users");
    store.delete(id);
}
```

## Example:

```javascript
deleteUser(db, 1);
```

## Optional: Get All Records

```javascript
function getAllUsers(db) {
    return new Promise((resolve, reject) => {
        const tx = db.transaction("users", "readonly");
        const store = tx.objectStore("users");
        const request = store.getAll();

        request.onsuccess = () => resolve(request.result);
        request.onerror = () => reject(request.error);
    });
}
```

## Summary of Methods

| Operation | Method |
| --- | --- |
| Add | `store.add(data)` |
| Get | `store.get(key)` |
| Update | `store.put(data)` |
| Delete | `store.delete(key)` |
| Get All | `store.getAll()` |

## Answers

### Answer by Manish Sharma

We'll [assume a database](https://www.mindstick.com/interview/34295/demonstrate-how-to-use-indexeddb-with-promises) `UserDB` with an object store named `users` and `keyPath: "id"`.

## Setup (once)

```javascript
const request = indexedDB.open("UserDB", 1);

request.onupgradeneeded = function (event) {
    const db = event.target.result;
    if (!db.objectStoreNames.contains("users")) {
        db.createObjectStore("users", { keyPath: "id" });
    }
};
```

## Add a Record

```javascript
function addUser(db, user) {
    const tx = db.transaction("users", "readwrite");
    const store = tx.objectStore("users");
    store.add(user); // Must contain a unique "id"
}
```

## Example usage:

```javascript
addUser(db, { id: 1, name: "Alice", email: "alice@example.com" });
```

## Get a Record by Key

```javascript
function getUser(db, id) {
    return new Promise((resolve, reject) => {
        const tx = db.transaction("users", "readonly");
        const store = tx.objectStore("users");
        const request = store.get(id);

        request.onsuccess = () => resolve(request.result);
        request.onerror = () => reject(request.error);
    });
}
```

## Usage:

```javascript
getUser(db, 1).then(user => console.log(user));
```

## Update a Record

You use `put()` instead of `add()` — it replaces the object with the same key:

```javascript
function updateUser(db, updatedUser) {
    const tx = db.transaction("users", "readwrite");
    const store = tx.objectStore("users");
    store.put(updatedUser); // Replaces if id exists
}
```

## Example:

```javascript
updateUser(db, { id: 1, name: "Alice Smith", email: "alice@example.com" });
```

> 💡 `put()` will add a new record if the key doesn't exist — unlike `add()` which throws an error if the key exists.

## Delete a [Record](https://www.mindstick.com/interview/34303/what-is-a-keypath-and-how-is-it-used-in-indexeddb)

```javascript
function deleteUser(db, id) {
    const tx = db.transaction("users", "readwrite");
    const store = tx.objectStore("users");
    store.delete(id);
}
```

## Example:

```javascript
deleteUser(db, 1);
```

## Optional: Get All Records

```javascript
function getAllUsers(db) {
    return new Promise((resolve, reject) => {
        const tx = db.transaction("users", "readonly");
        const store = tx.objectStore("users");
        const request = store.getAll();

        request.onsuccess = () => resolve(request.result);
        request.onerror = () => reject(request.error);
    });
}
```

## Summary of Methods

| Operation | Method |
| --- | --- |
| Add | `store.add(data)` |
| Get | `store.get(key)` |
| Update | `store.put(data)` |
| Delete | `store.delete(key)` |
| Get All | `store.getAll()` |


---

Original Source: https://www.mindstick.com/interview/34306/how-do-you-add-get-update-and-delete-records

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
