პირველ რიგში დაგჭირდებათ თქვენს კომპიუტერზე დაყენებული გქონდეთ ნოუდი. ამის შემდეგ კი იწყება პროექტის შექმნა.
შექმენით პროექტი მაგალითად express-mongoose-crud და ამ საქაღალდეში შექმნით ერთი main.js ფაილი. გახსენით ტერმინალი და გაუშვით შემდეგი ბრძანება:
bashnpm init -y
ეს ბრძანება შეგიქმნით package.json ფაილს და ამის შემდეგ დაგჭირდებათ დააინსტალიროთ ის დიფენდენსიები რაც დაგვჭირდება პროექტისთვის. გავუშვათ შემდეგი ბრძანება ტერმინალში:
bashnpm i express mongoose dotenv
ამის შემდეგ დაგჭირდებათ შეხვიდეთ MongodbAtlass-ზე ლინკი და შექმნათ ახალი პროექტი რომლის მერეც თქვენ გექნებათ მონგოსთან დასაკავშირებელი სტრინგი connection string. შეგიძლით ამის გარეშეც ლოკალურად დაუკავშირდეთ მონგოს თუმცა დღეს არ განვიხილავთ მას.
შევქმნათ .env ფაილი root-დონეზე და შიგნით ჩავწეროთ ჩვენი სტრინგი.
txtMONGO_URL=mongodb+srv://username:password@...
ამის შემდეგ შევქმნათ ახალი ფოლდერი სახელად config და შიგნით გავაკეთოთ ერთი ახალი ფაილი რომელშიც დავწერთ მონგოსთან დაკავშირების ფუნცქიას. config/connectToDB.js
javascriptconst { default: mongoose } = require("mongoose") const dotenv = require('dotenv') dotenv.config() module.exports = async () => { try { await mongoose.connect(process.env.MONGO_URL) console.log('connected successfully') } catch (error) { console.log(error, "cound not connect mongoDb") } }
ამის შემდეგ უკვე გვინდა შექვნათ ახალი ფოლდერი models ან schemas სახელი თქვენზეა დამოკიდებული და შიგნით უნდა აღვწეროთ როგორ უნდა გამოიყურებოდეს თითოეული მონოგოს ჩანაწერი.
დღეს განვიხილოთ იუზერების მაგალითი. models/user.model.js
javascriptconst { default: mongoose } = require("mongoose"); const userSchema = new mongoose.Schema({ fullName: { type: String, required: true }, email: { type: String, required: true, lowercase: true, unique: true, }, age: { type: String, required: true, }, }) module.exports = mongoose.model('user', userSchema)
ამის შემდეგ ჩვენ უკვე შეგვიძლია გავაკეთოთ იუზერის როუტი სადაც სხვადასხვა მეთოდების მიხედვით შევასრულებთ CRUD-ის ტიპის ოპერაციებს.
შევქმნათ routes ან controllers ის ფოლდერი სადაც დავაიმპლემენტირებთ იუზერების CRUD ის ფუნციონალს.
routes/user.route.js
javascriptconst { Router } = require('express') const { isValidObjectId } = require("mongoose") const userModel = require("../models/user.model") const userRouter = Router() // ყვეელა იუზერის წამოღება userRouter.get('/', async (req, res, next) => { const users = await userModel.find() res.json(users) }) // იუზერის წამოღება აიდის მიხედვით userRouter.get('/:id', async (req, res, next) => { const { id } = req.params if (!isValidObjectId(id)) return res.status(400).json({ message: 'wrong user id is provided' }) const user = await userModel.findById(id) if (!user) return res.status(404).json({ message: "user not found" }) res.json(user) }) // ახალი იუზერის შექმნა userRouter.post('/', async (req, res, next) => { const {fullName, age, email} = req.body if(!fullName || !age || !email) return res.status(400).json({message: 'fullName, age and email is required') const newUser = await userModel.create({fullName, email, age}) res.status(201).json({ message: 'user created successfully', data: newUser }) }) // იუზერის დააფდეითება აიდის მიხედვით userRouter.put('/:id', async (req, res, next) => { const { id } = req.params if (!isValidObjectId(id)) return res.status(400).json({ message: 'wrong user id is provided' }) const updatedUser = await userModel.findByIdAndUpdate(id, req.body, { new: true }) if (!updatedUser) return res.status(404).json({ message: "user not found" }) res.json({ message: 'user updated successfully', data: updatedUser }) }) // იუზერის წაშლა აიდის მიხედვით userRouter.delete('/:id', async (req, res, next) => { const { id } = req.params if (!isValidObjectId(id)) return res.status(400).json({ message: 'wrong user id is provided' }) const deletedUser = await userModel.findByIdAndDelete(id) if (!deletedUser) return res.status(404).json({ message: "user not found" }) res.json({ message: 'user deleted successfully', data: deletedUser }) }) module.exports = userRouter
ამის შემდეგ დაგვრჩა ერთი მოქმედება რომ ეს ყველაფერი main.js ფაილში შევაიმპორტოთ და დავსტარტოთ სერვერი.
main.js
javascriptconst express = require('express') const userRouter = require('./users/user.route') const connectToDB = require('./config/connectToDB') const app = express() connectToDB() app.use(express.json()) app.use('/users', userRouter) app.listen(3000, () => { console.log('server running on http://localhost:3000') })
სერვერის დასასტარტად შეგვიძლია გამოვიყენოთ შემდეგი ბრძანება ტერმინლაში:
bashnode main.js
თუმცა როცა ცვლილებას შეიტანთ მოგიწევთ გამორთოთ სერვერი და ახლიდან ჩართოთ ამ პრობლემის მოსაგვარებლად უმჯობესია სერვერის დასტარტვის სკრიპტი გავწეროთ package.json ფაილში.
json"scripts": { "start": "node --watch main.js", "test": "echo \"Error: no test specified\" && exit 1" },
სერვერის დასასტარტად გამოვიყენოთ ბრძანება
bashnpm run start
სერვერი დაისტარტება http://localhost:3000 მისამართზე და ისღა დაგვრჩენია გავტესტოთ როგორ მუშაობს.
ტესტირებისთვის უნდა დაარექუესთოთ შემდეგ მისამართებზე:
/users GET მოგცემთ ყველა იუზერს
/users POST ბადიში გაატანთ იუზერის სახელს, იმეილს, ასაკს და დაგიბრუნბეთ ახალ შექმნილ იუზერს
/users/1234567 GET დაგიბრუნებთ იუზერს აიდის მიხედვით
/users/1234567 DELETE წაშლის იუზერს და დაგუბრუნებთ წაშლილს.
/users/1234567 PUT ბადიში გაატანთ რაც გინდათ რომ დააფდეითდეს და დაგიბრუნებთ დააფდეითებულ იუზერს
დღეისათვის სულ ეს იყო იმედია მოგეწონათ ბლოგი.