Menu
CoddyTech

إدراج المستندات

جزء من قسم قواعد البيانات باستخدام MongoDB في رحلة Node.js على Coddy. الدرس 2 من 18.

يرسل العميل كتابًا جديدًا في متن طلب POST، وعلى الخادم تخزينه وإخبار العميل بما خزّنه.

لكل مستند حقل _id، وهو مفتاحه الفريد في المجموعة. عندما لا يحتوي الكائن الذي تُدرجه على هذا الحقل، تنشئه insertOne وتكتبه أيضًا في الكائن نفسه. لا تُرجع الاستدعاءة سوى acknowledged وinsertedId، ولا تُرجع المستند نفسه مطلقًا.

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: وهذا ما يريد العميل استلامه.

challenge icon

التحدي

سهل
  • يخزّن POST /books جسم JSON ككتاب جديد.
  • يردّ بالرمز 201 مع الكتاب المخزّن، بما في ذلك _id الخاص به.

أرسل POST /books مع { "title": "Beloved", "author": "Toni Morrison", "year": 1987, "isbn": "9781400033416", "genre": "literary" }. ثم أرسل GET /books وألقِ نظرة على علامة تبويب البيانات.

جرّب بنفسك

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());

// تُرجع كل حالة خطأ { 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');
});

جميع دروس قواعد البيانات باستخدام MongoDB