You are on page 1of 7

MEAN

MVC(CARS)........................................................................................................................................1

MVC(CARS)
CLIENT
1. Створюємо модель Car:
export class Car {
    id: number = 0
    name: string
    model: string
    price: number
    image: string = ""
    constructor(name: string, model: string, price: number) {
        this.name = name
        this.model = model
        this.price = price
    }
}

2. Створюємо сервіс Cars


import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Router } from '@angular/router';
import { Car } from '../models/car';

@Injectable({
  providedIn: 'root'
})
export class CarService {

  private url = 'http://localhost:3000/api/cars';
  constructor(
    private http: HttpClient,
    private router: Router
    ) { }

  getCars(): Observable<Car[]>{
    return this.http.get(this.url) as Observable<Car[]>;
  }

  getCar(id: number): Observable<Car>{
    return this.http.get(`${this.url}/${id}`) as Observable<Car>;
  }

  deleteCar(id: number): Observable<any>{

    return this.http.delete(`${this.url}/${id}`);

  createCar(newCar: Car): Observable<any>{

    return this.http.post(this.url, newCar);

  udateCar(id: number) {
     // ... PUT
  }

SERVER
3. Index.js
const express = require('express')

const app = express();

app.get('/', (req, res) => {
    res.status(200).json({
        message: 'hello from server'
    })
});

app.listen(5000, () => console.log('Server has been started'));

4. app.js
const express = require('express')
const app = express()
 
module.exports = app;

5. index.js
const app = require('./app')

 
app.get('/', function (req, res) {
  // res.send('Hello World')
  res.status(200).json({
      message: 'hello from server'
  })
})
 
app.listen(3000, () => {
    console.log('Server has been started');
})

6. routes/car.js
const express = require('express');
const router = express.Router();

router.get('/', function (req, res) {
    // res.send('Hello World')
    res.status(200).json({
        message: 'get all cars'
    })
})

module.exports = router;

7. app.js
const express = require('express')
const carRoutes = require('./routes/car')
const app = express()
 

app.use('/api/cars', carRoutes);

module.exports = app;

8. controllers/car.js
module.exports.getAllCars = (req, res) => {
    res.status(200).json([
        {id: '1', name: 'ford', 'model': 'focus', price: 1000},
        {id: '2', name: 'bmw', 'model': 'X6', price: 5000}
    ])
}
9. Встановлюєм пакети:

10. app.js
app.use(require('morgan')('dev'));
app.use(require('cors')());

11. Дописуємо екшени в контролері:


module.exports.getAllCars = (req, res) => {
    res.status(200).json([
        {id: '1', name: 'ford', 'model': 'focus', price: 1000},
        {id: '2', name: 'bmw', 'model': 'X6', price: 5000}
    ])
}

module.exports.getById = (req, res) => {
    res.status(200).json("one car")
}

module.exports.remove = (req, res) => {
    res.status(200).json("remove car")
}

module.exports.create = (req, res) => {
    res.status(200).json("create car")
}

module.exports.update = (req, res) => {
    res.status(200).json("update car")
}

12. Створюємо Route в файлі routes/car.js

const express = require('express');


const router = express.Router();
const controller = require('../controllers/car')
const jsonParser = express.json();

router.get('/', controller.getAllCars)
router.get('/:id', controller.getById)
router.post('/', jsonParser, controller.create)
router.put('/:id', controller.update)
router.delete('/:id', controller.remove)

module.exports = router;

13. Створюємо модель Car:

models/Car.js
const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const carSchema = new Schema({


    name: {
        type: String,
        required: true
    },
    model: {
        type: String,
        required: true
    },
    price: {
        type: Number,
        required: true
    },
    image: {
        type: String,
        required: false
    }
});

module.exports = mongoose.model('cars', carSchema);

14. Підключаємо mongo db


App.js
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/carsdb')
    .then(() => { console.log('MongoDB connected')})
    .catch((error) => {console.log(error)});

...

module.exports = app;
15. Знаходимо дані з БД
Controllers/car.js
const Car = require('../models/Car')

module.exports.getAllCars = async (req, res) => {


    const cars = await Car.find({});
    console.log(cars)
    res.status(200).json(cars)
}

module.exports.getById = (req, res) => {


    const id = req.params.id;
    Car.findOne({_id: id}, function(err, car){
         
        if(err) return console.log(err);
        res.send(car);
    });
}

module.exports.remove = (req, res) => {


    // res.status(200).json("remove car")
    const id = req.params.id;
    Car.findByIdAndDelete(id, function(err, car){
               
        if(err) return console.log(err);
        res.send(car);
    });
}

module.exports.create = (req, res) => {


    // res.status(200).json("create car")
   
    if(!req.body) return res.sendStatus(400);
       
    const carName = req.body.name;
    const carModel = req.body.model;
    const carPrice = req.body.price;
    const carImage =
"https://cdn.wccftech.com/wp-content/uploads/2020/12/maxresdefault-1.jpg";

    const car = new Car({name: carName, model: carModel, price: carPrice, image:
carImage});
       
    car.save(function(err){
        if(err) return console.log(err);
        res.send(car);
    });

module.exports.update = (req, res) => {


    res.status(200).json("update car")
}

16. Змінюємо в Car.js

export class Car {


    _id: string = ""
...
}

You might also like