Menu
CoddyTech

Menyisipkan Dokumen

Termasuk bagian Database dengan MongoDB dalam perjalanan Node.js di Coddy. Pelajaran 2 dari 18.

client mengirim buku baru dalam body POST, lalu server harus menyimpannya dan memberi tahu apa yang disimpannya.

Setiap dokumen memiliki field _id, kunci uniknya di collection. Jika object yang kamu masukkan belum memilikinya, insertOne akan membuatnya dan menuliskannya juga ke object yang sama. Pemanggilan ini hanya mengembalikan acknowledged dan insertedId, bukan dokumennya.

const movie = { title: 'Alien', year: 1979 };
const result = await movies.insertOne(movie);

console.log(result);    // { acknowledged: true, insertedId: new ObjectId('66f1...') }
console.log(movie._id); // id yang sama

Jadi setelah penyisipan, object yang kamu berikan adalah dokumen yang disimpan, termasuk _id: itulah yang ingin diterima kembali oleh client.

challenge icon

Tantangan

Mudah
  • POST /books menyimpan body JSON sebagai buku baru.
  • Responsnya adalah 201 dengan buku yang tersimpan, termasuk _id-nya.

Kirim POST /books dengan { "title": "Beloved", "author": "Toni Morrison", "year": 1987, "isbn": "9781400033416", "genre": "literary" }. Lalu kirim GET /books dan lihat tab Data.

Coba sendiri

import express from 'express';
import { MongoClient } from 'mongodb';

const client = new MongoClient('mongodb://localhost:27017');
const db = client.db('shelf');
const books = db.collection('books');

await books.insertMany([
    { title: 'Dune', author: 'Frank Herbert', year: 1965, isbn: '9780441013593', genre: 'scifi' },
    { title: 'Kindred', author: 'Octavia E. Butler', year: 1979, isbn: '9780807083697', genre: 'scifi' },
    { title: 'Emma', author: 'Jane Austen', year: 1815, isbn: '9780141439587', genre: 'classic' },
]);

const app = express();
app.use(express.json());

// Setiap error mengembalikan { error: message }.
function sendError(res, status, message) {
    res.status(status).json({ error: message });
}

app.get('/', (req, res) => {
    res.send('Bookshelf API');
});

app.get('/books', async (req, res) => {
    const list = await books.find().toArray();
    res.json(list);
});

app.listen(3000, () => {
    console.log('Bookshelf is running on port 3000');
});

Semua pelajaran di Database dengan MongoDB

Latihan sendiri: Playground Express