برنامه نویسی

من یک سرور CRUD با docker، fastify و mongoDB ایجاد کرده ام

فرضیه

کد زیر در ویدیوی یوتیوب من توضیح داده شده است (فقط ایتالیایی، .. اما زیرنویس انگلیسی) که برای 02-02-2023 برنامه ریزی شده است.

شما نیازی به دانستن نحوه عملکرد آن در docker ندارید. اما باید بدانید پایگاه داده چیست. دانستن تفاوت بین SQL یا NoSQL در اینجا مهم نیست. مهم است که بدانیم پایگاه داده چیست. و mongoDB یک پایگاه داده است.

باقی مانده

این پست همچنین فرض می کند که REST چیست. استراحت یعنی: انتقال دولتی نماینده. به طور خلاصه، .. با پایگاه داده عملیات CRUD (ایجاد، خواندن، به روز رسانی و حذف) یک فعل http مربوطه دارند.

  • ایجاد -> پست
  • READ -> GET
  • به روز رسانی -> قرار دادن
  • DELETE -> DELETE

Package.json

این Fastify CRUD کوچک بسیار بسیار ساده است. در بسته json ما فقط چند بسته داریم: @fastify/mongodb@6.0.0 و fastify. هیچ وابستگی دیگری لازم نیست.

نیاز

کد در اینجا بسیار بسیار ساده است. آن را بارگذاری fastify آگهی ثبت نام mongo. پایگاه داده کتابخانه نامیده می شود فقط به این دلیل که من می خواهم یک ابزار ساده برای ذخیره همه کتاب های خود بسازم.

const fastify = require('fastify')({ logger: !true })

fastify.register(require('@fastify/mongodb'), {
    forceClose: true,
    url: 'mongodb://localhost:27017',
    database: 'library'
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد کردن

CRUD شامل ایجاد، خواندن، به‌روزرسانی و حذف است. این حرف اول است.

fastify.post('/books', async (request, reply) => {
    const result = await fastify
        .mongo.db.collection('books')
        .insertOne(request.body)

    reply.send({
        message: 'book added',
        id: result.insertId
    })
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خواندن

من می خواهم تمام کتاب های ذخیره شده در پایگاه داده را لیست کنم.

fastify.get('/books', async (request, reply) => {
    const books = await fastify
        .mongo.db.collection('books')
        .find().toArray()

    reply.send(books)
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به روز رسانی

من از php (Symfony) آمدم و کدهای مشابه را می بینم const { bookId } = request.params; برای من چیزی شبیه به طلا است. Node زبان بسیار خوبی است. من دارم عاشق این زبان میشم

fastify.put('/books/:bookId', async (request, reply) => {
    const { bookId } = request.params;
    const ObjectId = fastify.mongo.ObjectId
    const result = await fastify
        .mongo.db.collection('books')
        .replaceOne(
            { _id: new ObjectId(bookId) },
            request.body
        )

    reply.send({
        message: 'book updated',
        id: result.insertId
    })
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حذف

fastify.delete('/books/:bookId', async (request, reply) => {
    const { bookId } = request.params;
    const ObjectId = fastify.mongo.ObjectId
    await fastify
        .mongo.db.collection('books')
        .deleteOne({ _id: new ObjectId(bookId) })

    reply.statusCode = 204
    reply.send(null)
})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سرور

const start = async () => {
    try {
        await fastify.listen({ port: 3000 })
    } catch (err) {
        fastify.log.error(err)
        process.exit(1)
    }
}

start()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرا کن

حالا با دو دستور ساده:

  • npm run mongo
  • npm run start

ما یک برنامه آماده دریافت می کنیم. در این پست من مشتری ندارم بنابراین من در اینجا چند دستور curl برای انجام تمام عملیات CRUD قرار می دهم. تغییر دادن <bookId> با شناسه واقعی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا