Menyisipkan Dokumen
Termasuk bagian Database dengan MongoDB dalam perjalanan Node.js di Coddy. Pelajaran 5 dari 29.
Client mengirim buku baru dalam body POST, dan server harus menyimpannya lalu memberi tahu apa yang disimpan.
Setiap dokumen memiliki field _id, yaitu kunci uniknya dalam collection. Jika objek yang kamu masukkan belum memilikinya, insertOne akan membuatnya dan menuliskannya juga ke objek yang sama. Pemanggilan ini hanya mengembalikan acknowledged dan insertedId, bukan dokumennya. insertedId adalah ObjectId, jenis id yang dibuat MongoDB. Menemukan dokumen berdasarkan ObjectId menjelaskan hal ini.
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 samaJadi, setelah penyisipan, objek yang kamu berikan adalah dokumen yang disimpan, termasuk _id: itulah yang ingin diterima kembali oleh client.
Starter memasukkan tiga buku dengan insertMany, yang menerima array dokumen. insertOne menerima satu dokumen. Keduanya adalah penulisan asinkron.
Tantangan
MudahKlien kini dapat menambahkan buku. Simpan buku yang dikirim klien, lalu kirim kembali dengan id barunya.
- Di
server.js, di bawahGET /books, tambahkan rutePOST /books. - Rute ini menyimpan body JSON sebagai dokumen baru di collection
books. - Rute ini merespons dengan status 201 dan buku seperti saat disimpan, termasuk
_idyang dibuat MongoDB. Untuk body di Coba, responsnya adalah:{ "title": "Beloved", "author": "Toni Morrison", "year": 1987, "isbn": "9781400033416", "genre": "literary", "_id": "6720a1f4c2b9e81d3a5f0c14" }_id-mu akan berbeda. Urutan field tidak penting. Coba: KirimPOST /booksdengan body ini:{ "title": "Beloved", "author": "Toni Morrison", "year": 1987, "isbn": "9781400033416", "genre": "literary" }. Kamu mendapat 201 dan buku dengan_id. KirimGET /books: kamu mendapat empat buku, dengan Beloved di urutan terakhir. Tab Data menampilkan empat dokumen dibooks. Tekan Jalankan lagi dan Beloved akan hilang. Setiap kali kamu menekan Jalankan, database dimulai dalam keadaan kosong, lalu program awal menyimpan tiga buku yang sama lagi.
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
1Dokumen
Buku sebagai DokumenKoleksi dan DatabaseMenghubungkan ke MongoDBMembaca Dokumen TersimpanMenyisipkan DokumenMenemukan Satu DokumenMenemukan Dokumen berdasarkan ObjectIdMembandingkan AngkaFilter QueryMemilih Field yang DikembalikanMengurutkan Hasil QueryMempertahankan Hasil PertamaProyeksi, Pengurutan, dan BatasLatihan sendiri: Playground Express