من یک سرور 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>
با شناسه واقعی